aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2015-01-16 09:38:59 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2015-01-16 09:38:59 +0000
commitde37b21e3d945ed6a0bf032078c233854ff38c8e (patch)
tree77bb03abdfe5561e51159f0f1c980b486229ae09 /gcc
parente1872645056e6aeee90a54a825d0961a57c6966a (diff)
downloadgcc-de37b21e3d945ed6a0bf032078c233854ff38c8e.zip
gcc-de37b21e3d945ed6a0bf032078c233854ff38c8e.tar.gz
gcc-de37b21e3d945ed6a0bf032078c233854ff38c8e.tar.bz2
re PR c++/58614 ([c++11] ICE with undeclared variable in initializer list)
/cp 2015-01-16 Paolo Carlini <paolo.carlini@oracle.com> PR c++/58614 * pt.c (unify): When BRACE_ENCLOSED_INITIALIZER_P (arg), handle TREE_TYPE (elt) == error_mark_node. /testsuite 2015-01-16 Paolo Carlini <paolo.carlini@oracle.com> PR c++/58614 * g++.dg/cpp0x/auto44.C: New. From-SVN: r219716
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/auto44.C10
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 146d2ff..ff5fb7a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2015-01-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58614
+ * pt.c (unify): When BRACE_ENCLOSED_INITIALIZER_P (arg), handle
+ TREE_TYPE (elt) == error_mark_node.
+
2015-01-15 Jan Hubicka <hubicka@ucw.cz>
PR tree-optimization/62053
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 55871e5..bc26530 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -17875,6 +17875,8 @@ unify (tree tparms, tree targs, tree parm, tree arg, int strict,
if (!BRACE_ENCLOSED_INITIALIZER_P (elt))
{
tree type = TREE_TYPE (elt);
+ if (type == error_mark_node)
+ return unify_invalid (explain_p);
/* It should only be possible to get here for a call. */
gcc_assert (elt_strict & UNIFY_ALLOW_OUTER_LEVEL);
elt_strict |= maybe_adjust_types_for_deduction
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 20df864..0c4b8eb 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58614
+ * g++.dg/cpp0x/auto44.C: New.
+
2015-01-15 Sandra Loosemore <sandra@codesourcery.com>
PR target/59710
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto44.C b/gcc/testsuite/g++.dg/cpp0x/auto44.C
new file mode 100644
index 0000000..687f154
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/auto44.C
@@ -0,0 +1,10 @@
+// PR c++/58614
+// { dg-do compile { target c++11 } }
+
+#include <initializer_list>
+
+void foo()
+{
+ i; // { dg-error "not declared" }
+ auto j = { i }; // { dg-error "unable to deduce" }
+}