]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Schedule a copy_prop pass before graphite.
authorSebastian Pop <sebastian.pop@amd.com>
Wed, 11 Aug 2010 20:24:47 +0000 (20:24 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Wed, 11 Aug 2010 20:24:47 +0000 (20:24 +0000)
2010-06-15  Sebastian Pop  <sebastian.pop@amd.com>

* passes.c (init_optimization_passes): Add pass_graphite.
Schedule a pass_copy_prop before pass_graphite_transforms.
* timevar.def (TV_GRAPHITE): Declared.
* tree-pass.h (pass_graphite): Declared.
* tree-ssa-loop.c (pass_graphite): New.

* gcc.dg/graphite/id-20.c: New.

From-SVN: r163120

gcc/ChangeLog
gcc/ChangeLog.graphite
gcc/passes.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/graphite/id-20.c [new file with mode: 0644]
gcc/timevar.def
gcc/tree-pass.h
gcc/tree-ssa-loop.c

index d6eb263232be94ec420a7103aa17cc88a5bcf2a2..b475e5835aceb3c0900874d22ffb3b1b5df43a1c 100644 (file)
@@ -1,3 +1,11 @@
+2010-08-02  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * passes.c (init_optimization_passes): Add pass_graphite.
+       Schedule a pass_copy_prop before pass_graphite_transforms.
+       * timevar.def (TV_GRAPHITE): Declared.
+       * tree-pass.h (pass_graphite): Declared.
+       * tree-ssa-loop.c (pass_graphite): New.
+
 2010-08-02  Sebastian Pop  <sebastian.pop@amd.com>
 
        * graphite-clast-to-gimple.c (gloog): Do not pass scops in parameter.
index aac1c96c8a83696cb696bd44b6b2bfe2f5f3cd99..8b72f3e0a4d6dccd8811975b7e55803638a0465d 100644 (file)
@@ -1,3 +1,13 @@
+2010-06-15  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * passes.c (init_optimization_passes): Add pass_graphite.
+       Schedule a pass_copy_prop before pass_graphite_transforms.
+       * timevar.def (TV_GRAPHITE): Declared.
+       * tree-pass.h (pass_graphite): Declared.
+       * tree-ssa-loop.c (pass_graphite): New.
+
+       * gcc.dg/graphite/id-20.c: New.
+
 2010-06-12  Sebastian Pop  <sebastian.pop@amd.com>
 
        * graphite-clast-to-gimple.c (gloog): Do not pass scops in parameter.
index 5a4cdc83a6e711c4a5bbcbf573ec3a3ce5eec514..e2b9369824e1a2f32418ccdd033b65c7a0bb34f4 100644 (file)
@@ -900,9 +900,12 @@ init_optimization_passes (void)
          NEXT_PASS (pass_check_data_deps);
          NEXT_PASS (pass_loop_distribution);
          NEXT_PASS (pass_linear_transform);
-         NEXT_PASS (pass_graphite_transforms);
+         NEXT_PASS (pass_copy_prop);
+         NEXT_PASS (pass_graphite);
            {
-             struct opt_pass **p = &pass_graphite_transforms.pass.sub;
+             struct opt_pass **p = &pass_graphite.pass.sub;
+             NEXT_PASS (pass_copy_prop);
+             NEXT_PASS (pass_graphite_transforms);
              NEXT_PASS (pass_copy_prop);
              NEXT_PASS (pass_dce_loop);
              NEXT_PASS (pass_lim);
index 51fb4a7e5a91a690c8844dc2496cd80d3f3c36f7..a2ee19f003e2c4830e2fdb5577f7c04c1477497b 100644 (file)
@@ -1,3 +1,7 @@
+2010-08-02  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * gcc.dg/graphite/id-20.c: New.
+
 2010-08-11  Janus Weil  <janus@gcc.gnu.org>
            Steve Kargl <kargl@gcc.gnu.org>
 
diff --git a/gcc/testsuite/gcc.dg/graphite/id-20.c b/gcc/testsuite/gcc.dg/graphite/id-20.c
new file mode 100644 (file)
index 0000000..7e0cf6d
--- /dev/null
@@ -0,0 +1,26 @@
+/* { dg-options "-O3 -fgraphite-identity -ffast-math" } */
+
+typedef enum
+{
+  I_SLICE,
+} SliceType;
+typedef struct
+{
+  int type;
+} ImageParameters;
+extern ImageParameters *img;
+int A[64], B[64], C[13][8][8], D[13][8][8];
+
+void
+foo (int q, int temp)
+{
+  int i, j, k;
+  for(k=0; k<13; k++)
+    for(j=0; j<8; j++)
+      for(i=0; i<8; i++)
+       {
+         if (img->type == I_SLICE)
+           C[k][j][i] = A[temp] << q;
+         D[k][j][i] = B[temp] << q;
+       }
+}
index a28d6baa3bfff4b6eb55ec95933ccc2a471a2b85..86e29995ff20af4389fdb213631ac385a50c289f 100644 (file)
@@ -146,6 +146,7 @@ DEFTIMEVAR (TV_COMPLETE_UNROLL       , "complete unrolling")
 DEFTIMEVAR (TV_TREE_PARALLELIZE_LOOPS, "tree parallelize loops")
 DEFTIMEVAR (TV_TREE_VECTORIZATION    , "tree vectorization")
 DEFTIMEVAR (TV_TREE_SLP_VECTORIZATION, "tree slp vectorization")
+DEFTIMEVAR (TV_GRAPHITE              , "Graphite")
 DEFTIMEVAR (TV_GRAPHITE_TRANSFORMS   , "Graphite loop transforms")
 DEFTIMEVAR (TV_GRAPHITE_DATA_DEPS    , "Graphite data dep analysis")
 DEFTIMEVAR (TV_GRAPHITE_CODE_GEN     , "Graphite code generation")
index 33c898ee2403309fb351862a68fe15ddc42a8f65..84d4a885bd89822b7976609a6478ee34174d8238 100644 (file)
@@ -373,6 +373,7 @@ extern struct gimple_opt_pass pass_iv_canon;
 extern struct gimple_opt_pass pass_scev_cprop;
 extern struct gimple_opt_pass pass_empty_loop;
 extern struct gimple_opt_pass pass_record_bounds;
+extern struct gimple_opt_pass pass_graphite;
 extern struct gimple_opt_pass pass_graphite_transforms;
 extern struct gimple_opt_pass pass_if_conversion;
 extern struct gimple_opt_pass pass_loop_distribution;
index 7a60144d0040a93ee408bbddfae86ea5e6ac96ca..9523dab14dd05f558ba01c4113947e93fc51f84f 100644 (file)
@@ -310,6 +310,25 @@ gate_graphite_transforms (void)
   return flag_graphite != 0;
 }
 
+struct gimple_opt_pass pass_graphite =
+{
+ {
+  GIMPLE_PASS,
+  "graphite0",                         /* name */
+  gate_graphite_transforms,            /* gate */
+  NULL,                                        /* execute */
+  NULL,                                        /* sub */
+  NULL,                                        /* next */
+  0,                                   /* static_pass_number */
+  TV_GRAPHITE,                         /* tv_id */
+  PROP_cfg | PROP_ssa,                 /* properties_required */
+  0,                                   /* properties_provided */
+  0,                                   /* properties_destroyed */
+  0,                                   /* todo_flags_start */
+  0                                    /* todo_flags_finish */
+ }
+};
+
 struct gimple_opt_pass pass_graphite_transforms =
 {
  {