diff options
author | Dwarakanath Rajagopal <dwarak.rajagopal@amd.com> | 2008-07-24 20:49:39 +0000 |
---|---|---|
committer | Sebastian Pop <sebastian.pop@amd.com> | 2008-07-24 20:49:39 +0000 |
commit | f1701f8a8319ae32a8e56484f4325c2cf4f98950 (patch) | |
tree | d5b201500566ab91b31f99c4c4712fff6953ac8a | |
parent | a3528722738b98ed38525b219f7135f6acbfdfb9 (diff) |
2008-07-24 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
* common.opt: New user flag -floop-block, -floop-strip-mine
and -floop-interchange.
* toplev.c (process_options): Enable -fgraphite pass if any one of the
graphite loop optimization flags is turned on.
* graphite.c (graphite_apply_transformations): Add flag_loop_block,
flag_loop_strip_mine and flag_loop_interchange checks before
optimizations.
* doc/invoke.texi: Remove -fgraphite and add -floop-block,
-floop-strip-mine and -floop-interchange.
* testsuite/gcc.dg/graphite/block-0.c: Add -floop-block and remove
-fgraphite.
* testsuite/gcc.dg/graphite/scop-16.c: Ditto.
* testsuite/gcc.dg/graphite/scop-17.c: Ditto.
* testsuite/gcc.dg/graphite/scop-18.c: Ditto.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/graphite@138124 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog.graphite | 17 | ||||
-rw-r--r-- | gcc/common.opt | 14 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 13 | ||||
-rw-r--r-- | gcc/graphite.c | 15 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/graphite/block-0.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/graphite/scop-16.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/graphite/scop-17.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/graphite/scop-18.c | 2 | ||||
-rw-r--r-- | gcc/toplev.c | 5 |
9 files changed, 55 insertions, 17 deletions
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index c678783df37..9ef26f53b29 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,20 @@ +2008-07-24 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com> + + * common.opt: New user flag -floop-block, -floop-strip-mine + and -floop-interchange. + * toplev.c (process_options): Enable -fgraphite pass if any one of the + graphite loop optimization flags is turned on. + * graphite.c (graphite_apply_transformations): Add flag_loop_block, + flag_loop_strip_mine and flag_loop_interchange checks before + optimizations. + * doc/invoke.texi: Remove -fgraphite and add -floop-block, + -floop-strip-mine and -floop-interchange. + * testsuite/gcc.dg/graphite/block-0.c: Add -floop-block and remove + -fgraphite. + * testsuite/gcc.dg/graphite/scop-16.c: Ditto. + * testsuite/gcc.dg/graphite/scop-17.c: Ditto. + * testsuite/gcc.dg/graphite/scop-18.c: Ditto. + 2008-07-23 Jan Sjodin <jan.sjodin@amd.com> Sebastian Pop <sebastian.pop@amd.com> diff --git a/gcc/common.opt b/gcc/common.opt index 668b0badf52..cdc0c5f7543 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -541,7 +541,19 @@ has finished fgraphite Common Report Var(flag_graphite) -Enable GRAPHITE loop transforms +Enable in and out of Graphite representation, not modifying the compiled program + +floop-strip-mine +Common Report Var(flag_loop_strip_mine) Optimization +Enable Loop Strip Mining transformation + +floop-interchange +Common Report Var(flag_loop_interchange) Optimization +Enable Loop Interchange transformation + +floop-block +Common Report Var(flag_loop_block) Optimization +Enable Loop Blocking transformation fguess-branch-probability Common Report Var(flag_guess_branch_prob) Optimization diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 83de7f2d098..e228da239a7 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -328,7 +328,8 @@ Objective-C and Objective-C++ Dialects}. -fearly-inlining -fexpensive-optimizations -ffast-math @gol -ffinite-math-only -ffloat-store -fforward-propagate @gol -ffunction-sections -fgcse -fgcse-after-reload -fgcse-las -fgcse-lm @gol --fgcse-sm -fgraphite -fif-conversion -fif-conversion2 -finline-functions @gol +-fgcse-sm -floop-block -floop-interchange -floop-strip-mine @gol +-fif-conversion -fif-conversion2 -finline-functions @gol -finline-functions-called-once -finline-limit=@var{n} @gol -finline-small-functions -fipa-cp -fipa-marix-reorg -fipa-pta @gol -fipa-pure-const -fipa-reference -fipa-struct-reorg @gol @@ -6096,8 +6097,14 @@ at @option{-O} and higher. Perform linear loop transformations on tree. This flag can improve cache performance and allow further loop optimizations to take place. -@item -fgraphite -Perform polyhedral transformations on loops. +@item -floop-block +Perform loop blocking transformations on loops. + +@item -floop-strip-mine +Perform loop strip mining transformations on loops. + +@item -floop-interchange +Perform loop interchange transformations on loops. @item -fcheck-data-deps @opindex fcheck-data-deps diff --git a/gcc/graphite.c b/gcc/graphite.c index 58b3eeec782..dc2738dec42 100644 --- a/gcc/graphite.c +++ b/gcc/graphite.c @@ -4580,22 +4580,19 @@ graphite_apply_transformations (scop_p scop) graphite_sort_gbbs (scop); scop_remove_ignoreable_gbbs (scop); + /* XXX: This functions are able to show some loop transformations. They blindly enable the named transformation on all bbs, without checking dependencies or if these transformations are valid at all. So disable the transformations, that may generate invalid code by default. */ - - if (0) - graphite_trans_scop_swap_1and2 (scop); - if (0) - graphite_trans_scop_strip (scop); - - /* Enabled by default to get tested. At the moment this is not save for all - scops, as we do not check dependencies. */ - if (1) + if (flag_loop_block) graphite_trans_scop_block (scop); + else if (flag_loop_strip_mine) + graphite_trans_scop_strip (scop); + else if (flag_loop_interchange) + graphite_trans_scop_swap_1and2 (scop); } /* Perform a set of linear transforms on LOOPS. */ diff --git a/gcc/testsuite/gcc.dg/graphite/block-0.c b/gcc/testsuite/gcc.dg/graphite/block-0.c index 2b981df52d7..c7035a3c86d 100644 --- a/gcc/testsuite/gcc.dg/graphite/block-0.c +++ b/gcc/testsuite/gcc.dg/graphite/block-0.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O -fgraphite -fdump-tree-graphite-all" } */ +/* { dg-options "-O -floop-block -fdump-tree-graphite-all" } */ #define N 1000 diff --git a/gcc/testsuite/gcc.dg/graphite/scop-16.c b/gcc/testsuite/gcc.dg/graphite/scop-16.c index c22e3bb9f9a..798ab577d52 100644 --- a/gcc/testsuite/gcc.dg/graphite/scop-16.c +++ b/gcc/testsuite/gcc.dg/graphite/scop-16.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -fgraphite -fdump-tree-graphite-all" } */ +/* { dg-options "-O2 -floop-block -fdump-tree-graphite-all" } */ #define N 100000 void foo (int); int test () diff --git a/gcc/testsuite/gcc.dg/graphite/scop-17.c b/gcc/testsuite/gcc.dg/graphite/scop-17.c index 829fe2829af..fb64cc6efcd 100644 --- a/gcc/testsuite/gcc.dg/graphite/scop-17.c +++ b/gcc/testsuite/gcc.dg/graphite/scop-17.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -fgraphite -fdump-tree-graphite-all" } */ +/* { dg-options "-O2 -floop-block -fdump-tree-graphite-all" } */ #define N 100000 void foo (int); int test () diff --git a/gcc/testsuite/gcc.dg/graphite/scop-18.c b/gcc/testsuite/gcc.dg/graphite/scop-18.c index 084e526c015..3338fe333be 100644 --- a/gcc/testsuite/gcc.dg/graphite/scop-18.c +++ b/gcc/testsuite/gcc.dg/graphite/scop-18.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -fgraphite -fdump-tree-graphite-all" } */ +/* { dg-options "-O2 -floop-block -fdump-tree-graphite-all" } */ #define N 24 #define M 1000 diff --git a/gcc/toplev.c b/gcc/toplev.c index f5d08a0fcf9..198a5039893 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -1948,6 +1948,11 @@ process_options (void) "for correctness"); flag_omit_frame_pointer = 0; } + + /* Enable -fgraphite pass if any one of the graphite optimization flags + is turned on. */ + if (flag_loop_block || flag_loop_interchange || flag_loop_strip_mine) + flag_graphite = 1; } /* This function can be called multiple times to reinitialize the compiler |