aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2015-12-22 14:49:12 -0700
committerJeff Law <law@gcc.gnu.org>2015-12-22 14:49:12 -0700
commit9edb6bb8d37985e92be466ca9d3418034e00fd7b (patch)
treec6b42b81bbd93ea071dc0836af82026b018e9ac6 /gcc
parent56343945983971d8fac3d80bf8c06d9c2fb07ad6 (diff)
downloadgcc-9edb6bb8d37985e92be466ca9d3418034e00fd7b.zip
gcc-9edb6bb8d37985e92be466ca9d3418034e00fd7b.tar.gz
gcc-9edb6bb8d37985e92be466ca9d3418034e00fd7b.tar.bz2
[PATCH] Avoid unnecessary block copying in path splitting
* gimple-ssa-split-paths.c (split_paths): Avoid unnecessary block copying. From-SVN: r231915
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/gimple-ssa-split-paths.c9
2 files changed, 9 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 73ab7d4..5e1e819 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2015-12-22 Jeff Law <law@redhat.com>
+
+ * gimple-ssa-split-paths.c (split_paths): Avoid unnecessary block
+ copying.
+
2015-12-22 Jakub Jelinek <jakub@redhat.com>
PR c++/67376
diff --git a/gcc/gimple-ssa-split-paths.c b/gcc/gimple-ssa-split-paths.c
index 540fdf3..294a1af 100644
--- a/gcc/gimple-ssa-split-paths.c
+++ b/gcc/gimple-ssa-split-paths.c
@@ -192,9 +192,10 @@ split_paths ()
/* BB is the merge point for an IF-THEN-ELSE we want to transform.
- Essentially we want to create two duplicates of BB and append
- a duplicate to the THEN and ELSE clauses. This will split the
- path leading to the latch. BB will be unreachable and removed. */
+ Essentially we want to create a duplicate of bb and redirect the
+ first predecessor of BB to the duplicate (leaving the second
+ predecessor as is. This will split the path leading to the latch
+ re-using BB to avoid useless copying. */
if (bb && is_feasible_trace (bb))
{
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -202,9 +203,7 @@ split_paths ()
"Duplicating join block %d into predecessor paths\n",
bb->index);
basic_block pred0 = EDGE_PRED (bb, 0)->src;
- basic_block pred1 = EDGE_PRED (bb, 1)->src;
transform_duplicate (pred0, bb);
- transform_duplicate (pred1, bb);
changed = true;
}
}