Message ID | 1311492333-30309-3-git-send-email-sebpop@gmail.com |
---|---|
State | New |
Headers | show |
On Sun, Jul 24, 2011 at 9:25 AM, Sebastian Pop <sebpop@gmail.com> wrote: > 2011-07-23 Sebastian Pop <sebastian.pop@amd.com> > > * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Build an unsigned > iv only when the largest type is unsigned. Do not call > lang_hooks.types.type_for_size. > > * testsuite/libgomp.graphite/force-parallel-1.c: Un-xfail. > * testsuite/libgomp.graphite/force-parallel-2.c: Adjust pattern. > --- > gcc/ChangeLog | 6 ++++++ > gcc/tree-ssa-loop-manip.c | 14 +++++++++++--- > libgomp/ChangeLog | 5 +++++ > .../testsuite/libgomp.graphite/force-parallel-1.c | 2 +- > .../testsuite/libgomp.graphite/force-parallel-2.c | 2 +- > 5 files changed, 24 insertions(+), 5 deletions(-) > > diff --git a/gcc/ChangeLog b/gcc/ChangeLog > index 2d147b8..e32034f 100644 > --- a/gcc/ChangeLog > +++ b/gcc/ChangeLog > @@ -1,5 +1,11 @@ > 2011-07-23 Sebastian Pop <sebastian.pop@amd.com> > > + * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Build an unsigned > + iv only when the largest type is unsigned. Do not call > + lang_hooks.types.type_for_size. > + > +2011-07-23 Sebastian Pop <sebastian.pop@amd.com> > + > PR middle-end/47653 > * graphite-scop-detection.c (graphite_can_represent_loop): Discard > loops using wrapping semantics. > diff --git a/gcc/tree-ssa-loop-manip.c b/gcc/tree-ssa-loop-manip.c > index 8176ed8..2512269 100644 > --- a/gcc/tree-ssa-loop-manip.c > +++ b/gcc/tree-ssa-loop-manip.c > @@ -1200,6 +1200,8 @@ canonicalize_loop_ivs (struct loop *loop, tree *nit, bool bump_in_latch) > gimple stmt; > edge exit = single_dom_exit (loop); > gimple_seq stmts; > + enum machine_mode mode; > + bool unsigned_p = false; > > for (psi = gsi_start_phis (loop->header); > !gsi_end_p (psi); gsi_next (&psi)) > @@ -1207,11 +1209,17 @@ canonicalize_loop_ivs (struct loop *loop, tree *nit, bool bump_in_latch) > gimple phi = gsi_stmt (psi); > tree res = PHI_RESULT (phi); > > - if (is_gimple_reg (res) && TYPE_PRECISION (TREE_TYPE (res)) > precision) > - precision = TYPE_PRECISION (TREE_TYPE (res)); > + type = TREE_TYPE (res); > + if (is_gimple_reg (res) && TYPE_PRECISION (type) > precision) > + { > + precision = TYPE_PRECISION (type); > + unsigned_p = TYPE_UNSIGNED (type); For two IVs with the same precision, one signed and one unsigned you choose signedness of the canonical IV based on the random order of PHIs - that doesn't look correct. I think what you should do here is use an unsigned type if any of the IVs with the current max precision is unsigned. Richard. > + } > } > > - type = lang_hooks.types.type_for_size (precision, 1); > + mode = smallest_mode_for_size (precision, MODE_INT); > + precision = GET_MODE_PRECISION (mode); > + type = build_nonstandard_integer_type (precision, unsigned_p); > > if (original_precision != precision) > { > diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog > index 9225401..d5cd94d 100644 > --- a/libgomp/ChangeLog > +++ b/libgomp/ChangeLog > @@ -1,3 +1,8 @@ > +2011-07-23 Sebastian Pop <sebastian.pop@amd.com> > + > + * testsuite/libgomp.graphite/force-parallel-1.c: Un-xfail. > + * testsuite/libgomp.graphite/force-parallel-2.c: Adjust pattern. > + > 2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> > > PR target/49541 > diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-1.c b/libgomp/testsuite/libgomp.graphite/force-parallel-1.c > index 71ed332..7f043d8 100644 > --- a/libgomp/testsuite/libgomp.graphite/force-parallel-1.c > +++ b/libgomp/testsuite/libgomp.graphite/force-parallel-1.c > @@ -23,7 +23,7 @@ int main(void) > } > > /* Check that parallel code generation part make the right answer. */ > -/* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 2 "graphite" { xfail *-*-* } } } */ > +/* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 2 "graphite" } } */ > /* { dg-final { cleanup-tree-dump "graphite" } } */ > /* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" } } */ > /* { dg-final { cleanup-tree-dump "parloops" } } */ > diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-2.c b/libgomp/testsuite/libgomp.graphite/force-parallel-2.c > index 1ce0feb..03d8236 100644 > --- a/libgomp/testsuite/libgomp.graphite/force-parallel-2.c > +++ b/libgomp/testsuite/libgomp.graphite/force-parallel-2.c > @@ -23,7 +23,7 @@ int main(void) > } > > /* Check that parallel code generation part make the right answer. */ > -/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 1 "graphite" } } */ > +/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 2 "graphite" } } */ > /* { dg-final { cleanup-tree-dump "graphite" } } */ > /* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" } } */ > /* { dg-final { cleanup-tree-dump "parloops" } } */ > -- > 1.7.4.1 > >
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2d147b8..e32034f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2011-07-23 Sebastian Pop <sebastian.pop@amd.com> + * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Build an unsigned + iv only when the largest type is unsigned. Do not call + lang_hooks.types.type_for_size. + +2011-07-23 Sebastian Pop <sebastian.pop@amd.com> + PR middle-end/47653 * graphite-scop-detection.c (graphite_can_represent_loop): Discard loops using wrapping semantics. diff --git a/gcc/tree-ssa-loop-manip.c b/gcc/tree-ssa-loop-manip.c index 8176ed8..2512269 100644 --- a/gcc/tree-ssa-loop-manip.c +++ b/gcc/tree-ssa-loop-manip.c @@ -1200,6 +1200,8 @@ canonicalize_loop_ivs (struct loop *loop, tree *nit, bool bump_in_latch) gimple stmt; edge exit = single_dom_exit (loop); gimple_seq stmts; + enum machine_mode mode; + bool unsigned_p = false; for (psi = gsi_start_phis (loop->header); !gsi_end_p (psi); gsi_next (&psi)) @@ -1207,11 +1209,17 @@ canonicalize_loop_ivs (struct loop *loop, tree *nit, bool bump_in_latch) gimple phi = gsi_stmt (psi); tree res = PHI_RESULT (phi); - if (is_gimple_reg (res) && TYPE_PRECISION (TREE_TYPE (res)) > precision) - precision = TYPE_PRECISION (TREE_TYPE (res)); + type = TREE_TYPE (res); + if (is_gimple_reg (res) && TYPE_PRECISION (type) > precision) + { + precision = TYPE_PRECISION (type); + unsigned_p = TYPE_UNSIGNED (type); + } } - type = lang_hooks.types.type_for_size (precision, 1); + mode = smallest_mode_for_size (precision, MODE_INT); + precision = GET_MODE_PRECISION (mode); + type = build_nonstandard_integer_type (precision, unsigned_p); if (original_precision != precision) { diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 9225401..d5cd94d 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,8 @@ +2011-07-23 Sebastian Pop <sebastian.pop@amd.com> + + * testsuite/libgomp.graphite/force-parallel-1.c: Un-xfail. + * testsuite/libgomp.graphite/force-parallel-2.c: Adjust pattern. + 2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR target/49541 diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-1.c b/libgomp/testsuite/libgomp.graphite/force-parallel-1.c index 71ed332..7f043d8 100644 --- a/libgomp/testsuite/libgomp.graphite/force-parallel-1.c +++ b/libgomp/testsuite/libgomp.graphite/force-parallel-1.c @@ -23,7 +23,7 @@ int main(void) } /* Check that parallel code generation part make the right answer. */ -/* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 2 "graphite" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 2 "graphite" } } */ /* { dg-final { cleanup-tree-dump "graphite" } } */ /* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" } } */ /* { dg-final { cleanup-tree-dump "parloops" } } */ diff --git a/libgomp/testsuite/libgomp.graphite/force-parallel-2.c b/libgomp/testsuite/libgomp.graphite/force-parallel-2.c index 1ce0feb..03d8236 100644 --- a/libgomp/testsuite/libgomp.graphite/force-parallel-2.c +++ b/libgomp/testsuite/libgomp.graphite/force-parallel-2.c @@ -23,7 +23,7 @@ int main(void) } /* Check that parallel code generation part make the right answer. */ -/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 1 "graphite" } } */ +/* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 2 "graphite" } } */ /* { dg-final { cleanup-tree-dump "graphite" } } */ /* { dg-final { scan-tree-dump-times "loopfn" 5 "optimized" } } */ /* { dg-final { cleanup-tree-dump "parloops" } } */