Skip to content
Snippets Groups Projects
Commit e52af9ca authored by Roger Sayle's avatar Roger Sayle
Browse files

PR c++/96440: ICE-on-invalid-code error recovery.

This patch fixes PR c++/96440 which is an ICE-on-invalid-code regression
affecting mainline.

2022-03-08  Roger Sayle  <roger@nextmovesoftware.com>

gcc/cp/ChangeLog
	PR c++/96440
	* decl.cc (start_decl): Defend against prefix_attributes being
	error_mark_node.

gcc/testsuite/ChangeLog
	PR c++/96440
	* g++.dg/cpp0x/pr96440.C: New test case.
parent 48777d98
No related branches found
No related tags found
No related merge requests found
......@@ -5483,13 +5483,15 @@ start_decl (const cp_declarator *declarator,
 
*pushed_scope_p = NULL_TREE;
 
attributes = chainon (attributes, prefix_attributes);
if (prefix_attributes != error_mark_node)
attributes = chainon (attributes, prefix_attributes);
 
decl = grokdeclarator (declarator, declspecs, NORMAL, initialized,
&attributes);
 
if (decl == NULL_TREE || VOID_TYPE_P (decl)
|| decl == error_mark_node)
|| decl == error_mark_node
|| prefix_attributes == error_mark_node)
return error_mark_node;
 
context = CP_DECL_CONTEXT (decl);
......
/* { dg-do compile } */
/* { dg-excess-errors "" } */
auto alignas a [[]] [[const]] ();
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment