aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2011-03-01 17:44:26 -0500
committerJason Merrill <jason@gcc.gnu.org>2011-03-01 17:44:26 -0500
commitfaa9e9bfcaf52cd6194a1bf8f8b905a511b6e1e1 (patch)
treed0bf1a37f5acbba1ca549fdc8d2f9825edaa185a /gcc
parentf2ca11ca979bebcee53d00eb0ac712289d6e3e3e (diff)
downloadgcc-faa9e9bfcaf52cd6194a1bf8f8b905a511b6e1e1.zip
gcc-faa9e9bfcaf52cd6194a1bf8f8b905a511b6e1e1.tar.gz
gcc-faa9e9bfcaf52cd6194a1bf8f8b905a511b6e1e1.tar.bz2
re PR c++/46282 ([C++0x] ICE: SIGSEGV in grokbitfield (decl2.c:1054))
PR c++/46282 * decl2.c (grokbitfield): Handle type-dependent width. From-SVN: r170600
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl2.c3
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/regress/bitfield-err1.C9
4 files changed, 20 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d1b1b4a..ac3f4d7 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2011-03-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/46282
+ * decl2.c (grokbitfield): Handle type-dependent width.
+
2011-02-28 Jason Merrill <jason@redhat.com>
PR c++/47873
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 93d44a4..eb5d4f5 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -1052,7 +1052,8 @@ grokbitfield (const cp_declarator *declarator,
if (width != error_mark_node)
{
/* The width must be an integer type. */
- if (!INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (TREE_TYPE (width)))
+ if (!type_dependent_expression_p (width)
+ && !INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (TREE_TYPE (width)))
error ("width of bit-field %qD has non-integral type %qT", value,
TREE_TYPE (width));
DECL_INITIAL (value) = width;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 94bbe7e..fed2d43 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2011-03-01 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/regress/bitfield-err1.C: New.
+
2011-03-01 Richard Guenther <rguenther@suse.de>
PR tree-optimization/47890
diff --git a/gcc/testsuite/g++.dg/cpp0x/regress/bitfield-err1.C b/gcc/testsuite/g++.dg/cpp0x/regress/bitfield-err1.C
new file mode 100644
index 0000000..a2e9d47
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/regress/bitfield-err1.C
@@ -0,0 +1,9 @@
+// PR c++/46282
+// { dg-options -std=c++0x }
+
+template<int>
+class A
+{
+ A : i() {} // { dg-message "" }
+ int i;
+};