diff options
author | Segher Boessenkool <segher@kernel.crashing.org> | 2017-12-11 22:23:08 +0100 |
---|---|---|
committer | Segher Boessenkool <segher@gcc.gnu.org> | 2017-12-11 22:23:08 +0100 |
commit | 9221f990e762755626257b019839fb83baee791f (patch) | |
tree | a59c34858bd817724bd7482e02dd84a1b2f584b5 /gcc/ifcvt.c | |
parent | a5648717a8826a1bb60afd31b56c48b60d3813d4 (diff) | |
download | gcc-9221f990e762755626257b019839fb83baee791f.zip gcc-9221f990e762755626257b019839fb83baee791f.tar.gz gcc-9221f990e762755626257b019839fb83baee791f.tar.bz2 |
ifcvt: Call fixup_partitions (PR83361)
After converting a conditional branch to an unconditional trap to a
conditional trap, if the original trap is still reachable from another
path, it may be that it is in a hot basic block and only reachable from
cold blocks. Fix that up.
PR rtl-optimization/83361
* ifcvt.c (if_convert): Call fixup_partitions.
gcc/testsuite/
PR rtl-optimization/83361
* gcc.dg/pr83361.c: New testcase.
From-SVN: r255550
Diffstat (limited to 'gcc/ifcvt.c')
-rw-r--r-- | gcc/ifcvt.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index 91360d8..eb3da68 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -5446,6 +5446,10 @@ if_convert (bool after_combine) if (optimize == 1) df_remove_problem (df_live); + /* Some non-cold blocks may now be only reachable from cold blocks. + Fix that up. */ + fixup_partitions (); + checking_verify_flow_info (); } |