diff options
author | Richard Biener <rguenther@suse.de> | 2020-09-04 12:18:38 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2020-09-04 12:22:29 +0200 |
commit | fab77644842869adc8871e133e4c3f4c35b2b245 (patch) | |
tree | 8c0551b4af84ec3767be87c5816467e8e976c56b /gcc/cppbuiltin.c | |
parent | b898878032a5bbba0d1a981db6399664181531e9 (diff) | |
download | gcc-fab77644842869adc8871e133e4c3f4c35b2b245.zip gcc-fab77644842869adc8871e133e4c3f4c35b2b245.tar.gz gcc-fab77644842869adc8871e133e4c3f4c35b2b245.tar.bz2 |
tree-optimization/96931 - clear ctrl-altering flag more aggressively
The testcase shows that we fail to clear gimple_call_ctrl_altering_p
when the last abnormal edge goes away, causing an edge insert to
a loop header edge when we have preheaders to split the edge
unnecessarily.
The following addresses this by more aggressively clearing the
flag in cleanup_call_ctrl_altering_flag.
2020-09-04 Richard Biener <rguenther@suse.de>
PR tree-optimization/96931
* tree-cfgcleanup.c (cleanup_call_ctrl_altering_flag): If
there's a fallthru edge and no abnormal edge the call is
no longer control-altering.
(cleanup_control_flow_bb): Pass down the BB to
cleanup_call_ctrl_altering_flag.
* gcc.dg/pr96931.c: New testcase.
Diffstat (limited to 'gcc/cppbuiltin.c')
0 files changed, 0 insertions, 0 deletions