aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Grosser <grosser@fim.uni-passau.de>2008-05-07 02:34:04 +0000
committerSebastian Pop <sebastian.pop@amd.com>2008-05-07 02:34:04 +0000
commitd3cd1b8d49aa5a833ab4d6f2160879281a96fcda (patch)
tree5c78bb521210a43f0725bdf496e5cbc2a483a42c
parent559f7401d22d13158b9948020398fddd1305a775 (diff)
2008-05-06 Tobias Grosser <grosser@fim.uni-passau.de>
* graphite.c (scop_affine_expr): Renamed to loop_affine_expr. Check affine expressions depending on the outermost loop instead of a scop. (stmt_simple_for_scop_p): Same. (harmfule_stmt_in_scop): Same. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/graphite@135018 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog.graphite7
-rw-r--r--gcc/graphite.c35
2 files changed, 24 insertions, 18 deletions
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite
index bd230535196..a778591d70c 100644
--- a/gcc/ChangeLog.graphite
+++ b/gcc/ChangeLog.graphite
@@ -1,3 +1,10 @@
+2008-05-06 Tobias Grosser <grosser@fim.uni-passau.de>
+
+ * graphite.c (scop_affine_expr): Renamed to loop_affine_expr. Check affine
+ expressions depending on the outermost loop instead of a scop.
+ (stmt_simple_for_scop_p): Same.
+ (harmfule_stmt_in_scop): Same.
+
2008-04-28 Tobias Grosser <grosser@fim.uni-passau.de>
* graphite.c (dot_all_scops): Remove incorrect difficult bb coloring,
diff --git a/gcc/graphite.c b/gcc/graphite.c
index ddd5386424a..268e53d11dc 100644
--- a/gcc/graphite.c
+++ b/gcc/graphite.c
@@ -48,7 +48,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
VEC (scop_p, heap) *current_scops;
-static tree harmful_stmt_in_bb (scop_p, basic_block);
+static tree harmful_stmt_in_bb (struct loop *outermost_loop, basic_block);
static CloogMatrix *schedule_to_scattering (graphite_bb_p);
/* Returns a new loop_to_cloog_loop_str structure. */
@@ -378,14 +378,13 @@ outermost_loop_in_scop (scop_p scop, basic_block bb)
return nest;
}
-/* Return true when EXPR is an affine function in LOOP for the current
- open scop. EXPR is contained in BB. */
+/* Return true when EXPR is an affine function in LOOP with parameters
+ instantiated relative to outermost_loop. */
static bool
-scop_affine_expr (scop_p scop, struct loop *loop, tree expr, basic_block bb)
+loop_affine_expr (struct loop *outermost_loop, struct loop *loop, tree expr)
{
tree scev = analyze_scalar_evolution (loop, expr);
- struct loop *outermost_loop = outermost_loop_in_scop (scop, bb);
scev = instantiate_parameters (outermost_loop, scev);
@@ -395,13 +394,12 @@ scop_affine_expr (scop_p scop, struct loop *loop, tree expr, basic_block bb)
}
-/* Return true only when STMT is simple enough for being handled by
- Graphite. When the SCOP is NULL, i.e. when trying to start a new
- SCoP, the conditions are always not part of the scop: new SCoPs are
- created for each branch. */
+/* Return true only when STMT is simple enough for being handled by Graphite.
+ This depends on outermost_loop, as the parametetrs are initialized relativ
+ to this loop. */
static bool
-stmt_simple_for_scop_p (scop_p scop, tree stmt)
+stmt_simple_for_scop_p (struct loop *outermost_loop, tree stmt)
{
basic_block bb = bb_for_stmt (stmt);
struct loop *loop = bb->loop_father;
@@ -433,9 +431,9 @@ stmt_simple_for_scop_p (scop_p scop, tree stmt)
case GT_EXPR:
case LE_EXPR:
case GE_EXPR:
- return (scop
- && scop_affine_expr (scop, loop, TREE_OPERAND (opnd0, 0), bb)
- && scop_affine_expr (scop, loop, TREE_OPERAND (opnd0, 1), bb));
+ return (outermost_loop
+ && loop_affine_expr (outermost_loop, loop, TREE_OPERAND (opnd0, 0))
+ && loop_affine_expr (outermost_loop, loop, TREE_OPERAND (opnd0, 1)));
default:
return false;
}
@@ -485,8 +483,8 @@ stmt_simple_for_scop_p (scop_p scop, tree stmt)
return true;
}
- /* We cannot return (scop_affine_expr (loop, opnd0) &&
- scop_affine_expr (loop, opnd1)) because D.1882_16 is
+ /* We cannot return (loop_affine_expr (loop, opnd0) &&
+ loop_affine_expr (loop, opnd1)) because D.1882_16 is
not affine in the following:
D.1881_15 = a[j_13][pretmp.22_20];
@@ -539,12 +537,12 @@ stmt_simple_for_scop_p (scop_p scop, tree stmt)
this statement. */
static tree
-harmful_stmt_in_bb (scop_p scop, basic_block bb)
+harmful_stmt_in_bb (struct loop *outermost_loop, basic_block bb)
{
block_stmt_iterator bsi;
for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
- if (!stmt_simple_for_scop_p (scop, bsi_stmt (bsi)))
+ if (!stmt_simple_for_scop_p (outermost_loop, bsi_stmt (bsi)))
return bsi_stmt (bsi);
return NULL_TREE;
@@ -872,7 +870,8 @@ build_scops_1 (basic_block cbb, VEC (scop_p, heap) **open_scops, bitmap visited)
{
basic_block bb = e->dest;
scop_p scop = VEC_last (scop_p, *open_scops);
- tree harmful_stmt = harmful_stmt_in_bb (scop, bb);
+ tree harmful_stmt = harmful_stmt_in_bb (outermost_loop_in_scop (scop, bb),
+ bb);
if (harmful_stmt)
{