diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2011-05-27 14:21:33 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2011-05-27 14:21:33 +0000 |
commit | efaa76b31d79af03bcd7291053f407357b4d35bb (patch) | |
tree | aa2a047109bbd2908546b33ba962f9572ad7bb01 | |
parent | b0bd15f7aa9e9eecc4d97f6c0165c32c3055922e (diff) | |
download | gcc-efaa76b31d79af03bcd7291053f407357b4d35bb.zip gcc-efaa76b31d79af03bcd7291053f407357b4d35bb.tar.gz gcc-efaa76b31d79af03bcd7291053f407357b4d35bb.tar.bz2 |
re PR c++/42056 (ICE with invalid use of auto in template)
/cp
2011-05-27 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/42056
* typeck2.c (build_functional_cast): Complain early for invalid uses
of 'auto' and set type to error_mark_node.
/testsuite
2011-05-27 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/42056
* testsuite/g++.dg/cpp0x/auto25.C: New.
From-SVN: r174337
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/typeck2.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/auto25.C | 12 |
4 files changed, 30 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ed758c4..cd2ff47 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2011-05-27 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/42056 + * typeck2.c (build_functional_cast): Complain early for invalid uses + of 'auto' and set type to error_mark_node. + 2011-05-26 Jason Merrill <jason@redhat.com> PR c++/47721 diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index c2eff9e..031f076 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -1599,6 +1599,13 @@ build_functional_cast (tree exp, tree parms, tsubst_flags_t complain) return error_mark_node; } + if (type_uses_auto (type)) + { + if (complain & tf_error) + error ("invalid use of %<auto%>"); + type = error_mark_node; + } + if (processing_template_decl) { tree t; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b11ddc2..6189223 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-05-27 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/42056 + * testsuite/g++.dg/cpp0x/auto25.C: New. + 2011-05-27 Richard Guenther <rguenther@suse.de> * gcc.c-torture/execute/920711-1.x: Add -fwrapv. diff --git a/gcc/testsuite/g++.dg/cpp0x/auto25.C b/gcc/testsuite/g++.dg/cpp0x/auto25.C new file mode 100644 index 0000000..2917c0e --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/auto25.C @@ -0,0 +1,12 @@ +// PR c++/42056 +// { dg-options -std=c++0x } + +template<int> struct A +{ + int a[auto(1)]; // { dg-error "invalid use of" } +}; + +template<int> void foo() +{ + int a[auto(1)]; // { dg-error "invalid use of" } +} |