[project @ 2001-08-29 17:24:25 by qrczak]
authorqrczak <unknown>
Wed, 29 Aug 2001 17:24:25 +0000 (17:24 +0000)
committerqrczak <unknown>
Wed, 29 Aug 2001 17:24:25 +0000 (17:24 +0000)
Remove annoying warnings about using a deprecated extension
when compiling via gcc-3.0.

#if __GNUC__ >= 3
/* Assume that a flexible array member at the end of a struct
 * can be defined thus: T arr[]; */
#define FLEXIBLE_ARRAY
#else
/* Assume that it must be defined thus: T arr[0]; */
#define FLEXIBLE_ARRAY 0
#endif

A test program (hsking) compiled fine with gcc-3.0!

ghc/includes/Closures.h
ghc/includes/InfoTables.h
ghc/includes/Stg.h
ghc/includes/TSO.h

index 855b728..982b28f 100644 (file)
@@ -1,5 +1,5 @@
 /* ----------------------------------------------------------------------------
- * $Id: Closures.h,v 1.26 2001/02/11 17:51:08 simonmar Exp $
+ * $Id: Closures.h,v 1.27 2001/08/29 17:24:25 qrczak Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
@@ -139,7 +139,7 @@ typedef struct {
 
 struct StgClosure_ {
     StgHeader   header;
-    struct StgClosure_ *payload[0];
+    struct StgClosure_ *payload[FLEXIBLE_ARRAY];
 };
 
 /* What a stroke of luck - all our mutable closures follow the same
@@ -152,7 +152,7 @@ typedef struct StgMutClosure_ {
     StgHeader   header;
     StgWord     padding;
     struct StgMutClosure_ *mut_link;
-    struct StgClosure_ *payload[0];
+    struct StgClosure_ *payload[FLEXIBLE_ARRAY];
 } StgMutClosure;
 
 typedef struct {
@@ -164,14 +164,14 @@ typedef struct {
     StgHeader   header;
     StgWord     n_args;
     StgClosure *fun;
-    StgClosure *payload[0];
+    StgClosure *payload[FLEXIBLE_ARRAY];
 } StgPAP;
 
 typedef struct {
     StgHeader   header;
     StgWord     n_args;
     StgClosure *fun;
-    StgClosure *payload[0];
+    StgClosure *payload[FLEXIBLE_ARRAY];
 } StgAP_UPD;
 
 typedef struct {
@@ -195,14 +195,14 @@ typedef struct {
 typedef struct {
     StgHeader  header;
     StgWord    words;
-    StgWord    payload[0];
+    StgWord    payload[FLEXIBLE_ARRAY];
 } StgArrWords;
 
 typedef struct {
     StgHeader   header;
     StgWord     ptrs;
     StgMutClosure *mut_link;   /* mutable list */
-    StgClosure *payload[0];
+    StgClosure *payload[FLEXIBLE_ARRAY];
 } StgMutArrPtrs;
 
 typedef struct {
@@ -297,7 +297,7 @@ typedef struct {
   const struct _StgInfoTable* info;
   StgWord        liveness;
   StgWord        ret_addr;
-  StgWord        payload[0];
+  StgWord        payload[FLEXIBLE_ARRAY];
 } StgRetDyn;
 
 /* Concurrent communication objects */
@@ -326,7 +326,7 @@ typedef struct StgBlockingQueueElement_ {
   StgHeader                         header;
   struct StgBlockingQueueElement_  *link;      /* next elem in BQ */
   StgMutClosure                    *mut_link;  /* next elem in mutable list */
-  struct StgClosure_               *payload[0];/* contents of the closure */
+  struct StgClosure_               *payload[FLEXIBLE_ARRAY];/* contents of the closure */
 } StgBlockingQueueElement;
 
 /* only difference to std code is type of the elem in the BQ */
@@ -339,7 +339,7 @@ typedef struct StgBlockingQueue_ {
 /* this closure is hanging at the end of a blocking queue in (see RBH.c) */
 typedef struct StgRBHSave_ {
   StgHeader    header;
-  StgClosure  *payload[0];     /* 2 words ripped out of the guts of the */
+  StgClosure  *payload[FLEXIBLE_ARRAY];     /* 2 words ripped out of the guts of the */
 } StgRBHSave;                  /*  closure holding the blocking queue */
  
 typedef struct StgRBH_ {
index f9b97eb..516b188 100644 (file)
@@ -1,5 +1,5 @@
 /* ----------------------------------------------------------------------------
- * $Id: InfoTables.h,v 1.21 2001/03/22 03:51:09 hwloidl Exp $
+ * $Id: InfoTables.h,v 1.22 2001/08/29 17:24:25 qrczak Exp $
  * 
  * (c) The GHC Team, 1998-1999
  *
@@ -173,7 +173,7 @@ extern StgWord16 closure_flags[];
 
 typedef struct {
   StgWord size;
-  StgWord bitmap[0];
+  StgWord bitmap[FLEXIBLE_ARRAY];
 } StgLargeBitmap;
 
 /*
@@ -229,10 +229,10 @@ typedef struct _StgInfoTable {
     StgWord         srt_len : 16; /* }                                   */
 #endif
 #ifdef TABLES_NEXT_TO_CODE
-    StgCode         code[0];
+    StgCode         code[FLEXIBLE_ARRAY];
 #else
     StgFunPtr       entry;
-    StgFunPtr       vector[0];
+    StgFunPtr       vector[FLEXIBLE_ARRAY];
 #endif
 } StgInfoTable;
 
index b046847..9406275 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: Stg.h,v 1.37 2001/08/14 13:40:08 sewardj Exp $
+ * $Id: Stg.h,v 1.38 2001/08/29 17:24:25 qrczak Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
 /* Configuration */
 #include "config.h"
 
+#if __GNUC__ >= 3
+/* Assume that a flexible array member at the end of a struct
+ * can be defined thus: T arr[]; */
+#define FLEXIBLE_ARRAY
+#else
+/* Assume that it must be defined thus: T arr[0]; */
+#define FLEXIBLE_ARRAY 0
+#endif
+
 /* Some macros to handle DLLing (Win32 only at the moment). */
 #include "StgDLL.h"
 
index 795dd22..6929536 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: TSO.h,v 1.22 2001/07/23 23:26:14 ken Exp $
+ * $Id: TSO.h,v 1.23 2001/08/29 17:24:25 qrczak Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
@@ -188,7 +188,7 @@ typedef struct StgTSO_ {
   StgPtr             sp;
   StgUpdateFrame*    su;
   
-  StgWord            stack[0];
+  StgWord            stack[FLEXIBLE_ARRAY];
 } StgTSO;
 
 /* -----------------------------------------------------------------------------