aboutsummaryrefslogtreecommitdiff
path: root/gcc/ifcvt.c
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2017-12-11 22:23:08 +0100
committerSegher Boessenkool <segher@gcc.gnu.org>2017-12-11 22:23:08 +0100
commit9221f990e762755626257b019839fb83baee791f (patch)
treea59c34858bd817724bd7482e02dd84a1b2f584b5 /gcc/ifcvt.c
parenta5648717a8826a1bb60afd31b56c48b60d3813d4 (diff)
downloadgcc-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.c4
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 ();
}