c/107305 - avoid ICEing with invalid GIMPLE input to the GIMPLE FE
authorRichard Biener <rguenther@suse.de>
Wed, 19 Oct 2022 12:12:11 +0000 (14:12 +0200)
committerRichard Biener <rguenther@suse.de>
Thu, 20 Oct 2022 09:29:28 +0000 (11:29 +0200)
commit8e2b5cf7cde999582d1b8fff021faa487c8e34b0
treea7c5356d886096ce0bba651011198f1e34f7f0ab
parent5d6e834ecf212e7fc6f585b154af224d2e38c749
c/107305 - avoid ICEing with invalid GIMPLE input to the GIMPLE FE

The GIMPLE FE was designed to defer semantic error checking to the
GIMPLE IL verifier.  But that can end up causing spurious ICEs
earlier and in fact it will report an internal error.  The following
tries to improve the situation by explicitely calling into the
verifier from the parser and intructing it to not ICE but instead
zap the parsed body after an error is discovered.

PR c/107305
PR c/107306
gcc/c/
* gimple-parser.cc (c_parser_parse_gimple_body): Verify
the parsed IL and zap the body on error.

gcc/
* tree-cfg.h (verify_gimple_in_seq): Add parameter to
indicate whether to emit an ICE.  Add return value.
(verify_gimple_in_cfg): Likewise.
* tree-cfg.cc (verify_gimple_in_seq): Likewise.
(verify_gimple_in_cfg): Likewise.

gcc/testsuite/
* gcc.dg/gimplefe-error-15.c: New testcase.
gcc/c/gimple-parser.cc
gcc/testsuite/gcc.dg/gimplefe-error-15.c [new file with mode: 0644]
gcc/tree-cfg.cc
gcc/tree-cfg.h