https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100525
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Btw, the issue for the original testcase is that we run into
static void
c_parser_gimple_statement (gimple_parser &parser, gimple_seq *seq)
{
...
/* GIMPLE call statement without LHS. */
if (c_parser_next_token_is (parser, CPP_SEMICOLON)
&& TREE_CODE (lhs.value) == CALL_EXPR)
{
gimple *call;
call = gimple_build_call_from_tree (lhs.value, NULL);
gimple_seq_add_stmt_without_update (seq, call);
gimple_set_location (call, loc);
return;
and the C FE hands us back a non-error CALL_EXPR with an error_mark_node
argument. Usually those get "cleaned out" during gimplification but here
it prevails.