mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-09 20:31:36 +08:00
re PR c++/34068 (ICE using pseudo-destructor for invalid expression)
PR c++/34068 * semantics.c (finish_pseudo_destructor_expr): Handle object == error_mark_node. * g++.dg/template/pseudodtor4.C: New test. From-SVN: r130087
This commit is contained in:
parent
c31ab059b6
commit
09b1ccd6d8
@ -1,3 +1,9 @@
|
||||
2007-11-11 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/34068
|
||||
* semantics.c (finish_pseudo_destructor_expr): Handle
|
||||
object == error_mark_node.
|
||||
|
||||
2007-11-10 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/32241
|
||||
|
@ -1998,7 +1998,7 @@ finish_this_expr (void)
|
||||
tree
|
||||
finish_pseudo_destructor_expr (tree object, tree scope, tree destructor)
|
||||
{
|
||||
if (destructor == error_mark_node)
|
||||
if (object == error_mark_node || destructor == error_mark_node)
|
||||
return error_mark_node;
|
||||
|
||||
gcc_assert (TYPE_P (destructor));
|
||||
|
@ -1,3 +1,8 @@
|
||||
2007-11-11 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/34068
|
||||
* g++.dg/template/pseudodtor4.C: New test.
|
||||
|
||||
2007-11-10 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/34018
|
||||
|
10
gcc/testsuite/g++.dg/template/pseudodtor4.C
Normal file
10
gcc/testsuite/g++.dg/template/pseudodtor4.C
Normal file
@ -0,0 +1,10 @@
|
||||
// PR c++/34068
|
||||
// { dg-do compile }
|
||||
|
||||
template <typename> struct A
|
||||
{
|
||||
typedef int X;
|
||||
A () { T (). ~X (); } // { dg-error "there are no arguments to|fpermissive|was not declared in this scope" }
|
||||
};
|
||||
|
||||
A <int> a;
|
Loading…
x
Reference in New Issue
Block a user