commit 01b8ebb6e5940eca6d158dc793424a6580c90998
Author: segher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Wed May 4 20:54:47 2016 +0000
cfgcleanup: Fold jumps and conditional branches with returns
This patch makes cfgcleanup optimize jumps to returns. There are three
cases this handles:
-- A jump to a return; this is simplified to just that return.
-- A conditional branch to a return; simplified to a conditional return.
-- A conditional branch that falls through to a return. This is simplified
to a conditional return (with the condition inverted), falling through
to a jump to the original destination. That jump can then be optimized
further, as usual.
This handles all cases the current function.c does, and a few it misses.
* cfgcleanup.c (bb_is_just_return): New function.
(try_optimize_cfg): Simplify jumps to return, branches to return,
and branches around return.
Hi fellows,
As PR83496 mentioned: Testcase is wrongly lowering to:
GCC 8.x still reproducible the key point might be
bb_is_just_return
:Regards, Leslie Zhai