aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/decl2.c
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2012-08-25 09:53:30 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2012-08-25 09:53:30 +0000
commitf27a59cf8a51f4c28cec55545673405b20a02a98 (patch)
tree2800260d9c8b267b986fcfd7872938067b8bd713 /gcc/cp/decl2.c
parentcd057e3af0627c7528c19625bf972acde2b207fa (diff)
downloadgcc-f27a59cf8a51f4c28cec55545673405b20a02a98.zip
gcc-f27a59cf8a51f4c28cec55545673405b20a02a98.tar.gz
gcc-f27a59cf8a51f4c28cec55545673405b20a02a98.tar.bz2
re PR c++/51421 ([c++0x] ICE with invalid use of auto)
/cp 2012-08-25 Paolo Carlini <paolo.carlini@oracle.com> PR c++/51421 * decl2.c (mark_used): Consistently return false after errors about uses before deduction of auto. * semantics.c (finish_id_expression): Check mark_used return value and return error_mark_node in case of failure. /testsuite 2012-08-25 Paolo Carlini <paolo.carlini@oracle.com> PR c++/51421 * g++.dg/cpp0x/auto34.C: New. From-SVN: r190665
Diffstat (limited to 'gcc/cp/decl2.c')
-rw-r--r--gcc/cp/decl2.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 281f6ff..f76b596 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -4238,7 +4238,10 @@ mark_used (tree decl)
|| DECL_THUNK_P (decl))
{
if (!processing_template_decl && type_uses_auto (TREE_TYPE (decl)))
- error ("use of %qD before deduction of %<auto%>", decl);
+ {
+ error ("use of %qD before deduction of %<auto%>", decl);
+ return false;
+ }
return true;
}
@@ -4284,7 +4287,10 @@ mark_used (tree decl)
}
if (type_uses_auto (TREE_TYPE (decl)))
- error ("use of %qD before deduction of %<auto%>", decl);
+ {
+ error ("use of %qD before deduction of %<auto%>", decl);
+ return false;
+ }
/* If we don't need a value, then we don't need to synthesize DECL. */
if (cp_unevaluated_operand != 0)