diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2015-01-16 09:38:59 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2015-01-16 09:38:59 +0000 |
commit | de37b21e3d945ed6a0bf032078c233854ff38c8e (patch) | |
tree | 77bb03abdfe5561e51159f0f1c980b486229ae09 /gcc | |
parent | e1872645056e6aeee90a54a825d0961a57c6966a (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/auto44.C | 10 |
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" } +} |