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

This is Christophe Lyon's fix to PR c/98198, an ICE-on-invalid-code
regression affecting mainline, and a suitable testcase.
Tested on x86_64-pc-linux-gnu with make bootstrap and make -k check
with no new failures.  Ok for mainline?

2022-03-16  Christophe Lyon  <christophe.lyon@arm.com>
	    Roger Sayle  <roger@nextmovesoftware.com>

gcc/c-family/ChangeLog
	PR c/98198
	* c-attribs.cc (decl_or_type_attrs): Add error_mark_node check.

gcc/testsuite/ChangeLog
	PR c/98198
	* gcc.dg/pr98198.c: New test case.
This commit is contained in:
Roger Sayle 2022-03-16 23:20:34 +00:00
parent 732e4a75fe
commit 4565a07a64
2 changed files with 9 additions and 0 deletions

View file

@ -806,6 +806,8 @@ decl_or_type_attrs (tree node)
return attrs;
tree type = TREE_TYPE (node);
if (type == error_mark_node)
return NULL_TREE;
return TYPE_ATTRIBUTES (type);
}

View file

@ -0,0 +1,7 @@
/* { dg-do compile } */
static inline void sub_1 ( ) {
struct struct_1 var_9 , var_10
}
static int var_9[1] __attribute__ ( ( section ( ".data" ) ) ) ;
/* { dg-excess-errors "" } */