re PR c++/7266 (pedantic segfaults on missing typename)

PR c++/7266
cp:
	* decl.c (grokdeclarator): Check that TREE_OPERAND 0 of a
	SCOPE_REF is not null before dereferencing it.
testsuite:
	* g++.dg/template/typename3.C: New test.

From-SVN: r58540
This commit is contained in:
Zack Weinberg 2002-10-25 22:01:44 +00:00 committed by Zack Weinberg
parent cd60b4b8e7
commit f65e118396
4 changed files with 22 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2002-10-25 Zack Weinberg <zack@codesourcery.com>
PR c++/7266
* decl.c (grokdeclarator): Check that TREE_OPERAND 0 of a
SCOPE_REF is not null before dereferencing it.
2002-10-25 Mark Mitchell <mark@codesourcery.com>
* class.c (build_vtbl_initializer): Don't use build_vtable_entry.
@ -8,7 +14,7 @@
* decl.c (duplicate_decls): Copy it.
* method.c (make_thunk): Simplify, and add thunks to DECL_THUNKS.
* semantics.c (emit_associated_thunks): Simplify.
2002-10-24 David Edelsohn <edelsohn@gnu.org>
PR c++/7228

View File

@ -11241,8 +11241,9 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
pop_decl_namespace ();
else if (friendp && (TREE_COMPLEXITY (declarator) < 2))
/* Don't fall out into global scope. Hides real bug? --eichin */ ;
else if (! IS_AGGR_TYPE_CODE
(TREE_CODE (TREE_OPERAND (declarator, 0))))
else if (!TREE_OPERAND (declarator, 0)
|| !IS_AGGR_TYPE_CODE
(TREE_CODE (TREE_OPERAND (declarator, 0))))
;
else if (TREE_COMPLEXITY (declarator) == current_class_depth)
{

View File

@ -1,3 +1,7 @@
2002-10-25 Zack Weinberg <zack@codesourcery.com>
* g++.dg/template/typename3.C: New test.
2002-10-25 Mark Mitchell <mark@codesourcery.com>
* g++.dg/abi/vthunk2.C: New test.
@ -27,7 +31,7 @@
PR c++/7679
* g++.dg/parse/inline1.C: New test.
2002-10-23 Richard Henderson <rth@redhat.com>
* g++.dg/inherit/thunk1.C: Enable for x86_64.

View File

@ -0,0 +1,7 @@
// { dg-do compile }
// crash test - PR 7266
template <class A>
struct B {
typedef A::C::D E; // { dg-error "no type|parse error" }
};