diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2010-07-02 10:13:21 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2010-07-02 10:13:21 +0000 |
commit | baf7c318bbcad3acee65f8400c34665b9345f09a (patch) | |
tree | 1aac36b57a2abb64d87c7da60dabbe364f2c1999 /gcc | |
parent | 49ea7a0ef9fec0eecb2eb9ed60bfdc5630f23ad8 (diff) | |
download | gcc-baf7c318bbcad3acee65f8400c34665b9345f09a.zip gcc-baf7c318bbcad3acee65f8400c34665b9345f09a.tar.gz gcc-baf7c318bbcad3acee65f8400c34665b9345f09a.tar.bz2 |
re PR c++/44039 (ICE: Segmentation fault on error recovery)
/cp
2010-07-02 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/44039
* pt.c (tsubst_baselink): Return error_mark_node if lookup_fnfields
returns NULL_TREE.
/testsuite
2010-07-02 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/44039
* g++.dg/template/crash101.C: New.
From-SVN: r161698
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/template/crash101.C | 12 |
4 files changed, 25 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 27e7f7a..3b2764d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2010-07-02 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/44039 + * pt.c (tsubst_baselink): Return error_mark_node if lookup_fnfields + returns NULL_TREE. + 2010-07-01 Richard Guenther <rguenther@suse.de> * cp-gimplify.c (cp_gimplify_expr): Open-code the rhs diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 09d077a..79142b9 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -10737,6 +10737,8 @@ tsubst_baselink (tree baselink, tree object_type, if (IDENTIFIER_TYPENAME_P (name)) name = mangle_conv_op_name_for_type (optype); baselink = lookup_fnfields (qualifying_scope, name, /*protect=*/1); + if (!baselink) + return error_mark_node; /* If lookup found a single function, mark it as used at this point. (If it lookup found multiple functions the one selected diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b4dc10b..c1a291d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-07-02 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/44039 + * g++.dg/template/crash101.C: New. + 2010-07-02 Iain Sandoe <iains@gcc.gnu.org> * obj-c++.dg/cxx-ivars-3.mm: Make the test require OSX <= 10.4. diff --git a/gcc/testsuite/g++.dg/template/crash101.C b/gcc/testsuite/g++.dg/template/crash101.C new file mode 100644 index 0000000..38059fc --- /dev/null +++ b/gcc/testsuite/g++.dg/template/crash101.C @@ -0,0 +1,12 @@ +// PR c++/44039 + +struct locale { }; + +template<class charT> + void + foo() + { locale::locale(); } // // { dg-error "cannot call|function-style" } + +void +bar() +{ foo<char>(); } |