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.