aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2009-12-16 12:36:05 -0500
committerJason Merrill <jason@gcc.gnu.org>2009-12-16 12:36:05 -0500
commit483a1dce8a60446bef569c47f371fe7e8b50010a (patch)
tree3ecebb15b86b9d8d65002544ffb284a045075f64 /gcc
parent6568e44adfdf02156d399fa50565bd59cf2df5a2 (diff)
downloadgcc-483a1dce8a60446bef569c47f371fe7e8b50010a.zip
gcc-483a1dce8a60446bef569c47f371fe7e8b50010a.tar.gz
gcc-483a1dce8a60446bef569c47f371fe7e8b50010a.tar.bz2
re PR c++/42387 (ICE with new expression in class template)
PR c++/42387 * decl.c (compute_array_index_type): Mark a VLA as dependent. From-SVN: r155292
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl.c7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/ext/vla8.C15
4 files changed, 27 insertions, 5 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index f00ef84..8d2663b 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/42387
+ * decl.c (compute_array_index_type): Mark a VLA as dependent.
+
2009-12-15 Jason Merrill <jason@redhat.com>
PR c++/42358
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 5b37ef7..1c3f2ef 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -7270,11 +7270,8 @@ compute_array_index_type (tree name, tree size)
structural equality checks. */
itype = build_index_type (build_min (MINUS_EXPR, sizetype,
size, integer_one_node));
- if (!TREE_SIDE_EFFECTS (size))
- {
- TYPE_DEPENDENT_P (itype) = 1;
- TYPE_DEPENDENT_P_VALID (itype) = 1;
- }
+ TYPE_DEPENDENT_P (itype) = 1;
+ TYPE_DEPENDENT_P_VALID (itype) = 1;
SET_TYPE_STRUCTURAL_EQUALITY (itype);
return itype;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d0c0985..d2beaf3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/42387
+ * g++.dg/ext/vla8.C: New.
+
2009-12-16 Jakub Jelinek <jakub@redhat.com>
* gcc.c-torture/compile/20091215-1.c: New test.
diff --git a/gcc/testsuite/g++.dg/ext/vla8.C b/gcc/testsuite/g++.dg/ext/vla8.C
new file mode 100644
index 0000000..7b7428d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/vla8.C
@@ -0,0 +1,15 @@
+// PR c++/42387
+// { dg-options "" }
+
+template<class PF>
+struct AvlTreeIter
+{
+ int Num();
+
+ AvlTreeIter()
+ {
+ new (void* [Num()]);
+ }
+};
+
+AvlTreeIter<int> a;