diff options
author | Jason Merrill <jason@redhat.com> | 2008-08-30 19:12:45 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2008-08-30 19:12:45 -0400 |
commit | 0257eee5bd4700647061f61b13a2f89b2a4b4f28 (patch) | |
tree | 42cc01ec157540732a29f1cb9640ce21a951ea3a /gcc | |
parent | a4cbe62dd936932edfad78846388ad36942f51ba (diff) | |
download | gcc-0257eee5bd4700647061f61b13a2f89b2a4b4f28.zip gcc-0257eee5bd4700647061f61b13a2f89b2a4b4f28.tar.gz gcc-0257eee5bd4700647061f61b13a2f89b2a4b4f28.tar.bz2 |
re PR c++/37288 (ICE using auto as function return type or parameter)
PR c++/37288
* pt.c (dependent_type_p): Don't abort on auto outside of a template.
From-SVN: r139811
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/pt.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/auto3.C | 7 |
3 files changed, 13 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index debbaba..7802e7e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2008-08-30 Jason Merrill <jason@redhat.com> + + PR c++/37288 + * pt.c (dependent_type_p): Don't abort on auto outside of a template. + 2008-08-29 Jason Merrill <jason@redhat.com> Implement C++0x 'auto' semantics. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 3b345f1..5bb18d9 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -15892,7 +15892,7 @@ dependent_type_p (tree type) /* If we are not processing a template, then nobody should be providing us with a dependent type. */ gcc_assert (type); - gcc_assert (TREE_CODE (type) != TEMPLATE_TYPE_PARM); + gcc_assert (TREE_CODE (type) != TEMPLATE_TYPE_PARM || is_auto (type)); return false; } diff --git a/gcc/testsuite/g++.dg/cpp0x/auto3.C b/gcc/testsuite/g++.dg/cpp0x/auto3.C index c16ed7b..dc4218b 100644 --- a/gcc/testsuite/g++.dg/cpp0x/auto3.C +++ b/gcc/testsuite/g++.dg/cpp0x/auto3.C @@ -14,3 +14,10 @@ struct A { }; A<int> A1; // CWG issue 625 A<auto> A2 = A1; // { dg-error "auto" } + +auto foo() { } // { dg-error "auto" } + +void bar(auto i) // { dg-error "incomplete|auto" } +{ + (void)i; +} |