aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2015-03-12 08:48:32 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2015-03-12 08:48:32 +0000
commitb13c907ab30853cd117ee0fbcad4dd2629633baa (patch)
tree96cf4512c45734f7ca303c37449d8c368c5cb258 /gcc
parentcb599e7d76f71c8bcb7f9484916f6be88527f8a6 (diff)
downloadgcc-b13c907ab30853cd117ee0fbcad4dd2629633baa.zip
gcc-b13c907ab30853cd117ee0fbcad4dd2629633baa.tar.gz
gcc-b13c907ab30853cd117ee0fbcad4dd2629633baa.tar.bz2
tree-cfg.c (gimple_split_block): Remove loop finding stmt to split on.
2015-03-12 Richard Biener <rguenther@suse.de> * tree-cfg.c (gimple_split_block): Remove loop finding stmt to split on. * omp-low.c (expand_omp_taskreg): Split block before removing the stmt. (expand_omp_target): Likewise. * ubsan.c (ubsan_expand_null_ifn): Adjust stmt if we replaced it. * tree-parloops.c (create_call_for_reduction_1): Pass a proper stmt to split_block. From-SVN: r221377
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/omp-low.c4
-rw-r--r--gcc/tree-cfg.c27
-rw-r--r--gcc/tree-parloops.c3
-rw-r--r--gcc/ubsan.c1
5 files changed, 24 insertions, 22 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d7eac09..e800af1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2015-03-12 Richard Biener <rguenther@suse.de>
+
+ * tree-cfg.c (gimple_split_block): Remove loop finding stmt
+ to split on.
+ * omp-low.c (expand_omp_taskreg): Split block before removing
+ the stmt.
+ (expand_omp_target): Likewise.
+ * ubsan.c (ubsan_expand_null_ifn): Adjust stmt if we replaced it.
+ * tree-parloops.c (create_call_for_reduction_1): Pass a proper
+ stmt to split_block.
+
2015-03-12 Tom de Vries <tom@codesourcery.com>
PR rtl-optimization/64895
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index 75d6707..2d64a74 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -5514,8 +5514,8 @@ expand_omp_taskreg (struct omp_region *region)
stmt = gsi_stmt (gsi);
gcc_assert (stmt && (gimple_code (stmt) == GIMPLE_OMP_PARALLEL
|| gimple_code (stmt) == GIMPLE_OMP_TASK));
- gsi_remove (&gsi, true);
e = split_block (entry_bb, stmt);
+ gsi_remove (&gsi, true);
entry_bb = e->dest;
single_succ_edge (entry_bb)->flags = EDGE_FALLTHRU;
@@ -8889,8 +8889,8 @@ expand_omp_target (struct omp_region *region)
stmt = gsi_stmt (gsi);
gcc_assert (stmt
&& gimple_code (stmt) == gimple_code (entry_stmt));
- gsi_remove (&gsi, true);
e = split_block (entry_bb, stmt);
+ gsi_remove (&gsi, true);
entry_bb = e->dest;
single_succ_edge (entry_bb)->flags = EDGE_FALLTHRU;
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 006bc08..e1bc143 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -5683,7 +5683,6 @@ gimple_split_block (basic_block bb, void *stmt)
{
gimple_stmt_iterator gsi;
gimple_stmt_iterator gsi_tgt;
- gimple act;
gimple_seq list;
basic_block new_bb;
edge e;
@@ -5697,26 +5696,16 @@ gimple_split_block (basic_block bb, void *stmt)
FOR_EACH_EDGE (e, ei, new_bb->succs)
e->src = new_bb;
- if (stmt && gimple_code ((gimple) stmt) == GIMPLE_LABEL)
- stmt = NULL;
-
- /* Move everything from GSI to the new basic block. */
- for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+ /* Get a stmt iterator pointing to the first stmt to move. */
+ if (!stmt || gimple_code ((gimple) stmt) == GIMPLE_LABEL)
+ gsi = gsi_after_labels (bb);
+ else
{
- act = gsi_stmt (gsi);
- if (gimple_code (act) == GIMPLE_LABEL)
- continue;
-
- if (!stmt)
- break;
-
- if (stmt == act)
- {
- gsi_next (&gsi);
- break;
- }
+ gsi = gsi_for_stmt ((gimple) stmt);
+ gsi_next (&gsi);
}
-
+
+ /* Move everything from GSI to the new basic block. */
if (gsi_end_p (gsi))
return new_bb;
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index 5f7c1bc..fbb9eeb 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -1111,7 +1111,8 @@ create_call_for_reduction_1 (reduction_info **slot, struct clsn_data *clsn_data)
/* Create phi node. */
bb = clsn_data->load_bb;
- e = split_block (bb, t);
+ gsi = gsi_last_bb (bb);
+ e = split_block (bb, gsi_stmt (gsi));
new_bb = e->dest;
tmp_load = create_tmp_var (TREE_TYPE (TREE_TYPE (addr)));
diff --git a/gcc/ubsan.c b/gcc/ubsan.c
index 98edfe0..0e23d91 100644
--- a/gcc/ubsan.c
+++ b/gcc/ubsan.c
@@ -864,6 +864,7 @@ ubsan_expand_null_ifn (gimple_stmt_iterator *gsip)
/* Replace the UBSAN_NULL with a GIMPLE_COND stmt. */
gsi_replace (&gsi, g, false);
+ stmt = g;
}
if (check_align)