aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-12-18 13:03:24 -0800
committerRichard Henderson <rth@gcc.gnu.org>2003-12-18 13:03:24 -0800
commita3bf324c4674ca8a2d09f739c48be2cc59f1a789 (patch)
tree9f486df3f0bb1ce1e6783a9fb57d4d7c914edbb4 /gcc
parent28e4696cc1310b069757e21a12c5d1bb7f46e724 (diff)
downloadgcc-a3bf324c4674ca8a2d09f739c48be2cc59f1a789.zip
gcc-a3bf324c4674ca8a2d09f739c48be2cc59f1a789.tar.gz
gcc-a3bf324c4674ca8a2d09f739c48be2cc59f1a789.tar.bz2
c-decl.c (check_bitfield_type_and_width): Remove enum special case suppression of pedwarn.
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/c-decl.c5
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/cp-tree.h2
-rw-r--r--gcc/system.h4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/bitfld-1.c3
7 files changed, 21 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b76dc30..39b799c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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>
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index d07c8338..4bf9727 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -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)
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 78d4ee2..ab064ba 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 250318e..bf923b0 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -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;
diff --git a/gcc/system.h b/gcc/system.h
index 5bcdd36..f8295f1 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -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
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2adba02..16703ba 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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>
diff --git a/gcc/testsuite/gcc.dg/bitfld-1.c b/gcc/testsuite/gcc.dg/bitfld-1.c
index ae2283c..37acb6e 100644
--- a/gcc/testsuite/gcc.dg/bitfld-1.c
+++ b/gcc/testsuite/gcc.dg/bitfld-1.c
@@ -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" } */
};