diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f00ef845158..8d2663ba23e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2009-12-16 Jason Merrill + + PR c++/42387 + * decl.c (compute_array_index_type): Mark a VLA as dependent. + 2009-12-15 Jason Merrill PR c++/42358 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 5b37ef7e710..1c3f2efe32a 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 d0c09850252..d2beaf38ab1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-12-15 Jason Merrill + + PR c++/42387 + * g++.dg/ext/vla8.C: New. + 2009-12-16 Jakub Jelinek * 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 00000000000..7b7428d07a9 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/vla8.C @@ -0,0 +1,15 @@ +// PR c++/42387 +// { dg-options "" } + +template +struct AvlTreeIter +{ + int Num(); + + AvlTreeIter() + { + new (void* [Num()]); + } +}; + +AvlTreeIter a;