aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2013-10-04 23:48:29 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2013-10-04 23:48:29 +0000
commit76b67a0ac9afadfda332b68c004e3262a1b448b7 (patch)
tree56aa856a4dca8104a204bfd0d5f0ae71bc0d65ca
parent12f64ca5e16915c6d6b0079b0286cc8e6066975b (diff)
downloadgcc-76b67a0ac9afadfda332b68c004e3262a1b448b7.zip
gcc-76b67a0ac9afadfda332b68c004e3262a1b448b7.tar.gz
gcc-76b67a0ac9afadfda332b68c004e3262a1b448b7.tar.bz2
re PR c++/58560 ([c++11] ICE with auto in typedef)
/cp 2013-10-04 Paolo Carlini <paolo.carlini@oracle.com> PR c++/58560 * typeck2.c (build_functional_cast): Use error_operand_p on exp. /testsuite 2013-10-04 Paolo Carlini <paolo.carlini@oracle.com> PR c++/58560 * g++.dg/cpp0x/auto39.C: New. From-SVN: r203220
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/typeck2.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/auto39.C6
4 files changed, 17 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 88e5078..219f415 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,10 @@
2013-10-04 Paolo Carlini <paolo.carlini@oracle.com>
+ PR c++/58560
+ * typeck2.c (build_functional_cast): Use error_operand_p on exp.
+
+2013-10-04 Paolo Carlini <paolo.carlini@oracle.com>
+
PR c++/58503
* parser.c (cp_parser_perform_range_for_lookup): If eventually
either *begin or *end is type-dependent, return NULL_TREE.
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index 8882816..011406c 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -1757,7 +1757,7 @@ build_functional_cast (tree exp, tree parms, tsubst_flags_t complain)
tree type;
vec<tree, va_gc> *parmvec;
- if (exp == error_mark_node || parms == error_mark_node)
+ if (error_operand_p (exp) || parms == error_mark_node)
return error_mark_node;
if (TREE_CODE (exp) == TYPE_DECL)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 68d415e..20ffa47 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2013-10-04 Paolo Carlini <paolo.carlini@oracle.com>
+ PR c++/58560
+ * g++.dg/cpp0x/auto39.C: New.
+
+2013-10-04 Paolo Carlini <paolo.carlini@oracle.com>
+
PR c++/58503
* g++.dg/cpp0x/range-for26.C: New.
* g++.dg/cpp0x/range-for27.C: Likewise.
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto39.C b/gcc/testsuite/g++.dg/cpp0x/auto39.C
new file mode 100644
index 0000000..dfa1fb4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/auto39.C
@@ -0,0 +1,6 @@
+// PR c++/58560
+// { dg-do compile { target c++11 } }
+
+typedef auto T; // { dg-error "typedef declared 'auto'" }
+
+void foo() { T(); }