aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-ssa-split-paths.c
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2019-05-01 11:33:32 -0600
committerJeff Law <law@gcc.gnu.org>2019-05-01 11:33:32 -0600
commitd36405344205c58beb1947719345ec80fdc00a34 (patch)
treedff72bf9a187ac1e44917ac2df46e9c995abc933 /gcc/gimple-ssa-split-paths.c
parent7ee7c293558326468f84720dca35767632f7b662 (diff)
downloadgcc-d36405344205c58beb1947719345ec80fdc00a34.zip
gcc-d36405344205c58beb1947719345ec80fdc00a34.tar.gz
gcc-d36405344205c58beb1947719345ec80fdc00a34.tar.bz2
re PR tree-optimization/88797 (Unneeded branch added when function is inlined (function runs faster if not inlined))
PR tree-optimization/88797 * gimple-ssa-split-paths (is_feasible_trace): Reject cases where the PHI feeds a conditional on the RHS of an assignment. PR tree-optimization/88797 * g++.dg/tree-ssa/pr88797.C: New test. From-SVN: r270775
Diffstat (limited to 'gcc/gimple-ssa-split-paths.c')
-rw-r--r--gcc/gimple-ssa-split-paths.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/gimple-ssa-split-paths.c b/gcc/gimple-ssa-split-paths.c
index 33bbb66..5bf45ee 100644
--- a/gcc/gimple-ssa-split-paths.c
+++ b/gcc/gimple-ssa-split-paths.c
@@ -264,8 +264,12 @@ is_feasible_trace (basic_block bb)
if (is_gimple_debug (stmt))
continue;
/* If there's a use in the joiner this might be a CSE/DCE
- opportunity. */
- if (gimple_bb (stmt) == bb)
+ opportunity, but not if the use is in a conditional
+ which makes this a likely if-conversion candidate. */
+ if (gimple_bb (stmt) == bb
+ && (!is_gimple_assign (stmt)
+ || (TREE_CODE_CLASS (gimple_assign_rhs_code (stmt))
+ != tcc_comparison)))
{
found_useful_phi = true;
break;