OSDN Git Service
(root)
/
pf3gnuchains
/
gcc-fork.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* gcc.c (getenv_spec_function): New function.
[pf3gnuchains/gcc-fork.git]
/
gcc
/
tree-loop-linear.c
diff --git
a/gcc/tree-loop-linear.c
b/gcc/tree-loop-linear.c
index
2ef7eac
..
61fdee3
100644
(file)
--- a/
gcc/tree-loop-linear.c
+++ b/
gcc/tree-loop-linear.c
@@
-236,22
+236,22
@@
try_interchange_loops (lambda_trans_matrix trans,
return trans;
}
return trans;
}
-/* Perform a set of linear transforms on
LOOPS
. */
+/* Perform a set of linear transforms on
loops
. */
void
void
-linear_transform_loops (
struct loops *loops
)
+linear_transform_loops (
void
)
{
bool modified = false;
{
bool modified = false;
-
unsigned int
i;
+
loop_iterator l
i;
VEC(tree,heap) *oldivs = NULL;
VEC(tree,heap) *invariants = NULL;
VEC(tree,heap) *oldivs = NULL;
VEC(tree,heap) *invariants = NULL;
+ struct loop *loop_nest;
-
for (i = 1; i < loops->num; i++
)
+
FOR_EACH_LOOP (li, loop_nest, 0
)
{
unsigned int depth = 0;
VEC (ddr_p, heap) *dependence_relations;
VEC (data_reference_p, heap) *datarefs;
{
unsigned int depth = 0;
VEC (ddr_p, heap) *dependence_relations;
VEC (data_reference_p, heap) *datarefs;
- struct loop *loop_nest = loops->parray[i];
struct loop *temp;
lambda_loopnest before, after;
lambda_trans_matrix trans;
struct loop *temp;
lambda_loopnest before, after;
lambda_trans_matrix trans;
@@
-270,7
+270,7
@@
linear_transform_loops (struct loops *loops)
...
}
} */
...
}
} */
- if (!loop_nest
|| !loop_nest->inner || !loop_nest->single_exit
)
+ if (!loop_nest
->inner || !single_exit (loop_nest)
)
continue;
VEC_truncate (tree, oldivs, 0);
VEC_truncate (tree, invariants, 0);
continue;
VEC_truncate (tree, oldivs, 0);
VEC_truncate (tree, invariants, 0);
@@
-278,7
+278,7
@@
linear_transform_loops (struct loops *loops)
for (temp = loop_nest->inner; temp; temp = temp->inner)
{
/* If we have a sibling loop or multiple exit edges, jump ship. */
for (temp = loop_nest->inner; temp; temp = temp->inner)
{
/* If we have a sibling loop or multiple exit edges, jump ship. */
- if (temp->next || !
temp->single_exit
)
+ if (temp->next || !
single_exit (temp)
)
{
problem = true;
break;
{
problem = true;
break;
@@
-308,7
+308,7
@@
linear_transform_loops (struct loops *loops)
{
if (dump_file)
fprintf (dump_file, "Won't transform loop. Optimal transform is the identity transform\n");
{
if (dump_file)
fprintf (dump_file, "Won't transform loop. Optimal transform is the identity transform\n");
- continue;
+
goto free_and_
continue;
}
/* Check whether the transformation is legal. */
}
/* Check whether the transformation is legal. */
@@
-316,15
+316,15
@@
linear_transform_loops (struct loops *loops)
{
if (dump_file)
fprintf (dump_file, "Can't transform loop, transform is illegal:\n");
{
if (dump_file)
fprintf (dump_file, "Can't transform loop, transform is illegal:\n");
- continue;
+
goto free_and_
continue;
}
}
- before = gcc_loopnest_to_lambda_loopnest (loop
s, loop
_nest, &oldivs,
+ before = gcc_loopnest_to_lambda_loopnest (loop_nest, &oldivs,
&invariants);
if (!before)
&invariants);
if (!before)
- continue;
-
+
goto free_and_
continue;
+
if (dump_file)
{
fprintf (dump_file, "Before:\n");
if (dump_file)
{
fprintf (dump_file, "Before:\n");
@@
-346,6
+346,7
@@
linear_transform_loops (struct loops *loops)
if (dump_file)
fprintf (dump_file, "Successfully transformed loop.\n");
if (dump_file)
fprintf (dump_file, "Successfully transformed loop.\n");
+ free_and_continue:
free_dependence_relations (dependence_relations);
free_data_refs (datarefs);
}
free_dependence_relations (dependence_relations);
free_data_refs (datarefs);
}