]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c-decl.c (check_bitfield_type_and_width): Remove enum special case suppression of...
authorRichard Henderson <rth@redhat.com>
Thu, 18 Dec 2003 21:03:24 +0000 (13:03 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 18 Dec 2003 21:03:24 +0000 (13:03 -0800)
        * c-decl.c (check_bitfield_type_and_width): Remove enum special
        case suppression of pedwarn.
        * system.h (ENUM_BITFIELD): Use __extension__.
        (CHAR_BITFIELD): Likewise.
cp/
        * cp-tree.h (struct lang_type_header): Remove __extension__.
testsuite/
        * gcc.dg/bitfld-1.c: Expect warnings for enum bitfields.

From-SVN: r74797

gcc/ChangeLog
gcc/c-decl.c
gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/system.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/bitfld-1.c

index b76dc3024ac4a1bf31c58595d02dfe6cf0d20e50..39b799c6c592435854d649ee1c0d135789d79d56 100644 (file)
@@ -1,3 +1,10 @@
+2003-12-18  Richard Henderson  <rth@redhat.com>
+
+       * c-decl.c (check_bitfield_type_and_width): Remove enum special
+       case suppression of pedwarn.
+       * system.h (ENUM_BITFIELD): Use __extension__.
+       (CHAR_BITFIELD): Likewise.
+
 2003-12-18  Ulrich Weigand  <uweigand@de.ibm.com>
            Mark Dettinger  <dettinge@de.ibm.com>
 
index d07c83383543214b575510a136d3f8434a25dcdc..4bf9727b2ada6bc3701b150f63067562c72ddec0 100644 (file)
@@ -3268,10 +3268,7 @@ check_bitfield_type_and_width (tree *type, tree *width, const char *orig_name)
   if (pedantic
       && type_mv != integer_type_node
       && type_mv != unsigned_type_node
-      && type_mv != boolean_type_node
-      /* Accept an enum that's equivalent to int or unsigned int.  */
-      && (TREE_CODE (*type) != ENUMERAL_TYPE
-         || TYPE_PRECISION (*type) != TYPE_PRECISION (integer_type_node)))
+      && type_mv != boolean_type_node)
     pedwarn ("type of bit-field `%s' is a GCC extension", name);
 
   if (type_mv == boolean_type_node)
index 78d4ee2bde3a1afe9dd58fadf2b425b7cb9da53c..ab064baa71db2a89d1e4296b3c1cad5f3ec2573f 100644 (file)
@@ -1,3 +1,7 @@
+2003-12-18  Richard Henderson  <rth@redhat.com>
+
+       * cp-tree.h (struct lang_type_header): Remove __extension__.
+
 2003-12-18  Jason Merrill  <jason@redhat.com>
 
        PR c++/12253
index 250318e721c5388ea987b68f59e6230f900fd88c..bf923b088404d2e6aa1b40130ed7e31d0975939a 100644 (file)
@@ -1017,7 +1017,7 @@ enum languages { lang_c, lang_cplusplus, lang_java };
 /* This is a few header flags for 'struct lang_type'.  Actually,
    all but the first are used only for lang_type_class; they
    are put in this structure to save space.  */
-__extension__ struct lang_type_header GTY(())
+struct lang_type_header GTY(())
 {
   CHAR_BITFIELD is_lang_type_class : 1;
 
index 5bcdd36baf7964d85e7b77bba94102064767b057..f8295f16bc73daf056050e0ad96c1a2eff406c29 100644 (file)
@@ -490,8 +490,8 @@ extern int snprintf (char *, size_t, const char *, ...);
    FIXME: provide a complete autoconf test for buggy enum bitfields.  */
 
 #if (GCC_VERSION > 2000)
-#define ENUM_BITFIELD(TYPE) enum TYPE
-#define CHAR_BITFIELD unsigned char
+#define ENUM_BITFIELD(TYPE) __extension__ enum TYPE
+#define CHAR_BITFIELD __extension__ unsigned char
 #else
 #define ENUM_BITFIELD(TYPE) unsigned int
 #define CHAR_BITFIELD unsigned int
index 2adba02f1a9ac7e134eeff4248cd512a6be15a75..16703ba5529f004c0fc6fbd812d27f0379648aa8 100644 (file)
@@ -1,3 +1,7 @@
+2003-12-18  Richard Henderson  <rth@redhat.com>
+
+       * gcc.dg/bitfld-1.c: Expect warnings for enum bitfields.
+
 2003-12-18  Steven Bosscher  <steven@gcc.gnu.org>
            Dan Kegel <dank@kegel.com>
 
index ae2283cfb1fa8ccada5af8d621426c0b472e357a..37acb6efac2aa8aef9d1d5c70e276c3420abc375 100644 (file)
@@ -25,6 +25,7 @@ struct bf1
   unsigned long g: 5;          /* { dg-warning "GCC extension|ISO C" } */
   ui h: 5;
   enum foo i: 2;               /* { dg-error "narrower" } */
-  enum foo j: 3;
+    /* { dg-warning "GCC extension|ISO C" "extension" { target *-*-* } 27 } */
+  enum foo j: 3;               /* { dg-warning "GCC extension|ISO C" } */
   unsigned int k: 256;         /* { dg-error "exceeds its type" } */
 };