diff options
author | Richard Biener <rguenther@suse.de> | 2022-09-07 12:01:34 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2022-09-08 16:05:17 +0200 |
commit | 78ef801b7263606d27a6a752a40cbeecc584fb3d (patch) | |
tree | b523e083051e0bed3f186cc7716ece05e98c280f /libgomp | |
parent | 4db3cb781c355341fa041e6b5bbbfc495c6a0fdb (diff) | |
download | gcc-78ef801b7263606d27a6a752a40cbeecc584fb3d.zip gcc-78ef801b7263606d27a6a752a40cbeecc584fb3d.tar.gz gcc-78ef801b7263606d27a6a752a40cbeecc584fb3d.tar.bz2 |
Fix some gimple_ctrl_altering_p mistakes
CFG cleanup resets the control altering flag for noreturn functions
when they are ECF_LEAF (like __builtin_unreachable ()). The
.ABNORMAL_DISPATCHER call built during CFG construction is not
marked as control altering. Several passes inserting traps or
unreachables fail to set the flag. And more.
PR middle-end/106870
* gimple-harden-conditionals.cc (insert_check_and_trap):
Set the control-altering flag on the built IFN_TRAP.
* gimple.cc (gimple_build_builtin_unreachable): Likewise.
* tree-cfg.cc (handle_abnormal_edges): Set the control-altering
flag on the .ABNORMAL_DISPATCHER call.
* tree-cfgcleanup.cc (cleanup_call_ctrl_altering_flag): Avoid
resetting the control altering flag for ECF_NORETURN calls.
(cleanup_control_flow_bb): Set the control altering flag on
discovered noreturn calls.
* symtab-thunks.cc (expand_thunk): Set the control altering
flag for the noreturn tailcall case.
* tree-eh.cc (lower_resx): Likewisw for trap and unwind_resume
calls.
Diffstat (limited to 'libgomp')
0 files changed, 0 insertions, 0 deletions