aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2011-07-25 15:29:13 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2011-07-25 15:29:13 +0000
commitc1703fc185b118903740257c9a8cd6e06fd562f1 (patch)
treeecb50074ee1739f8bed318cbc90b450c1c3e8faa /gcc
parentc2d8a62e2debedf777e53e2206c0a818707571ac (diff)
downloadgcc-c1703fc185b118903740257c9a8cd6e06fd562f1.zip
gcc-c1703fc185b118903740257c9a8cd6e06fd562f1.tar.gz
gcc-c1703fc185b118903740257c9a8cd6e06fd562f1.tar.bz2
re PR c++/49838 ([C++0x] ICE in cp_parser_perform_range_for_lookup, at cp/parser.c:8796)
/cp 2011-07-25 Paolo Carlini <paolo.carlini@oracle.com> PR c++/49838 * parser.c (cp_parser_perform_range_for_lookup): Early return if error_operand_p (range). /testsuite 2011-07-25 Paolo Carlini <paolo.carlini@oracle.com> PR c++/49838 * g++.dg/cpp0x/range-for19.C: New. From-SVN: r176754
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/parser.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/range-for19.C11
4 files changed, 25 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index a0f1f22..e1ff311 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2011-07-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/49838
+ * parser.c (cp_parser_perform_range_for_lookup): Early return if
+ error_operand_p (range).
+
2011-07-23 Jason Merrill <jason@redhat.com>
PR c++/49823
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 4e7d905..c687a34 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -8795,6 +8795,9 @@ cp_convert_range_for (tree statement, tree range_decl, tree range_expr)
static tree
cp_parser_perform_range_for_lookup (tree range, tree *begin, tree *end)
{
+ if (error_operand_p (range))
+ return error_mark_node;
+
if (!COMPLETE_TYPE_P (complete_type (TREE_TYPE (range))))
{
error ("range-based %<for%> expression of type %qT "
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f0e66cf..596ef6a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-07-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/49838
+ * g++.dg/cpp0x/range-for19.C: New.
+
2011-07-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR testsuite/49753
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for19.C b/gcc/testsuite/g++.dg/cpp0x/range-for19.C
new file mode 100644
index 0000000..4306fbd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for19.C
@@ -0,0 +1,11 @@
+// PR c++/49838
+
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+int main()
+{
+ auto a; // { dg-error "no initializer" }
+ for(auto i: a) // { dg-error "deduce" }
+ ;
+}