Fix PR49471: canonicalize_loop_ivs should not generate unsigned types.
2011-07-27 Sebastian Pop <sebastian.pop@amd.com> PR tree-optimization/49471 * 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. From-SVN: r176838
This commit is contained in:
parent
27165eddf6
commit
3689198db0
5 changed files with 35 additions and 5 deletions
|
@ -1,3 +1,10 @@
|
|||
2011-07-27 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
PR tree-optimization/49471
|
||||
* 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-27 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
PR middle-end/45450
|
||||
|
|
|
@ -1200,18 +1200,36 @@ 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))
|
||||
{
|
||||
gimple phi = gsi_stmt (psi);
|
||||
tree res = PHI_RESULT (phi);
|
||||
bool uns;
|
||||
|
||||
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)
|
||||
|| (!INTEGRAL_TYPE_P (type)
|
||||
&& !POINTER_TYPE_P (type))
|
||||
|| TYPE_PRECISION (type) < precision)
|
||||
continue;
|
||||
|
||||
uns = POINTER_TYPE_P (type) | TYPE_UNSIGNED (type);
|
||||
|
||||
if (TYPE_PRECISION (type) > precision)
|
||||
unsigned_p = uns;
|
||||
else
|
||||
unsigned_p |= uns;
|
||||
|
||||
precision = TYPE_PRECISION (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)
|
||||
{
|
||||
|
|
|
@ -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-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
PR libgomp/45351
|
||||
|
|
|
@ -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" } } */
|
||||
|
|
|
@ -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" } } */
|
||||
|
|
Loading…
Add table
Reference in a new issue