mirror of git://gcc.gnu.org/git/gcc.git
Fix PR42326: Handle more carefully convert expressions in chrec_fold_plus and chrec_fold_mult.
2010-03-05 Sebastian Pop <sebastian.pop@amd.com> PR middle-end/42326 * tree-chrec.c (chrec_fold_plus_1): Do not handle convert expressions that contain scevs. (chrec_fold_multiply): Same. * gfortran.dg/graphite/pr42326.f90: New. * gfortran.dg/graphite/pr42326-1.f90: New. From-SVN: r157244
This commit is contained in:
parent
576e4d8266
commit
ccc5b64063
|
@ -1,3 +1,10 @@
|
||||||
|
2010-03-05 Sebastian Pop <sebastian.pop@amd.com>
|
||||||
|
|
||||||
|
PR middle-end/42326
|
||||||
|
* tree-chrec.c (chrec_fold_plus_1): Do not handle convert expressions
|
||||||
|
that contain scevs.
|
||||||
|
(chrec_fold_multiply): Same.
|
||||||
|
|
||||||
2010-03-04 Andrew Pinski <andrew_pinski@caviumnetworks.com>
|
2010-03-04 Andrew Pinski <andrew_pinski@caviumnetworks.com>
|
||||||
|
|
||||||
PR c/43248
|
PR c/43248
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2010-03-05 Sebastian Pop <sebastian.pop@amd.com>
|
||||||
|
|
||||||
|
PR middle-end/42326
|
||||||
|
* gfortran.dg/graphite/pr42326.f90: New.
|
||||||
|
* gfortran.dg/graphite/pr42326-1.f90: New.
|
||||||
|
|
||||||
2010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
2010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||||
|
|
||||||
* lib/gnat.exp (gnat_init): Remove GNAT_UNDER_TEST_ORIG.
|
* lib/gnat.exp (gnat_init): Remove GNAT_UNDER_TEST_ORIG.
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
! { dg-do compile { target i?86-*-* x86_64-*-* } }
|
||||||
|
! { dg-require-effective-target ilp32 }
|
||||||
|
! { dg-options "-O2 -floop-parallelize-all -fprefetch-loop-arrays -msse2" }
|
||||||
|
|
||||||
|
subroutine phasad(t,i,ium)
|
||||||
|
implicit none
|
||||||
|
real t(5,4)
|
||||||
|
integer i,l,ll,ium
|
||||||
|
|
||||||
|
do l=1,2
|
||||||
|
ll=2*l
|
||||||
|
do i=1,ium
|
||||||
|
t(i,ll-1)=t(i,ll-1)+t(i,ll)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
return
|
||||||
|
end subroutine phasad
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
! { dg-do compile { target i?86-*-* x86_64-*-* } }
|
||||||
|
! { dg-require-effective-target ilp32 }
|
||||||
|
! { dg-options "-O2 -floop-strip-mine -fprefetch-loop-arrays -msse2" }
|
||||||
|
|
||||||
|
subroutine blts ( ldmx, ldmy, v, tmp1, i, j, k)
|
||||||
|
implicit none
|
||||||
|
integer ldmx, ldmy, i, j, k, ip, m, l
|
||||||
|
real*8 tmp, tmp1, v( 5, ldmx, ldmy, *), tmat(5,5)
|
||||||
|
|
||||||
|
do ip = 1, 4
|
||||||
|
do m = ip+1, 5
|
||||||
|
tmp = tmp1 * tmat( m, ip )
|
||||||
|
do l = ip+1, 5
|
||||||
|
tmat( m, l ) = tmat( m, l ) - tmat( ip, l )
|
||||||
|
end do
|
||||||
|
v( m, i, j, k ) = tmp
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
return
|
||||||
|
end subroutine blts
|
||||||
|
|
||||||
|
subroutine phasad(t,i,ium)
|
||||||
|
implicit none
|
||||||
|
real t(5,4)
|
||||||
|
integer i,l,ll,ium
|
||||||
|
|
||||||
|
do l=1,2
|
||||||
|
ll=2*l
|
||||||
|
do i=1,ium
|
||||||
|
t(i,ll-1)=t(i,ll-1)+t(i,ll)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
return
|
||||||
|
end subroutine phasad
|
||||||
|
|
|
@ -283,6 +283,10 @@ chrec_fold_plus_1 (enum tree_code code, tree type,
|
||||||
case POLYNOMIAL_CHREC:
|
case POLYNOMIAL_CHREC:
|
||||||
return chrec_fold_plus_poly_poly (code, type, op0, op1);
|
return chrec_fold_plus_poly_poly (code, type, op0, op1);
|
||||||
|
|
||||||
|
CASE_CONVERT:
|
||||||
|
if (tree_contains_chrecs (op1, NULL))
|
||||||
|
return chrec_dont_know;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (code == PLUS_EXPR || code == POINTER_PLUS_EXPR)
|
if (code == PLUS_EXPR || code == POINTER_PLUS_EXPR)
|
||||||
return build_polynomial_chrec
|
return build_polynomial_chrec
|
||||||
|
@ -296,6 +300,10 @@ chrec_fold_plus_1 (enum tree_code code, tree type,
|
||||||
CHREC_RIGHT (op0));
|
CHREC_RIGHT (op0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CASE_CONVERT:
|
||||||
|
if (tree_contains_chrecs (op0, NULL))
|
||||||
|
return chrec_dont_know;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
switch (TREE_CODE (op1))
|
switch (TREE_CODE (op1))
|
||||||
{
|
{
|
||||||
|
@ -314,6 +322,10 @@ chrec_fold_plus_1 (enum tree_code code, tree type,
|
||||||
? build_real (type, dconstm1)
|
? build_real (type, dconstm1)
|
||||||
: build_int_cst_type (type, -1)));
|
: build_int_cst_type (type, -1)));
|
||||||
|
|
||||||
|
CASE_CONVERT:
|
||||||
|
if (tree_contains_chrecs (op1, NULL))
|
||||||
|
return chrec_dont_know;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
int size = 0;
|
int size = 0;
|
||||||
|
@ -393,6 +405,10 @@ chrec_fold_multiply (tree type,
|
||||||
case POLYNOMIAL_CHREC:
|
case POLYNOMIAL_CHREC:
|
||||||
return chrec_fold_multiply_poly_poly (type, op0, op1);
|
return chrec_fold_multiply_poly_poly (type, op0, op1);
|
||||||
|
|
||||||
|
CASE_CONVERT:
|
||||||
|
if (tree_contains_chrecs (op1, NULL))
|
||||||
|
return chrec_dont_know;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (integer_onep (op1))
|
if (integer_onep (op1))
|
||||||
return op0;
|
return op0;
|
||||||
|
@ -405,6 +421,10 @@ chrec_fold_multiply (tree type,
|
||||||
chrec_fold_multiply (type, CHREC_RIGHT (op0), op1));
|
chrec_fold_multiply (type, CHREC_RIGHT (op0), op1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CASE_CONVERT:
|
||||||
|
if (tree_contains_chrecs (op0, NULL))
|
||||||
|
return chrec_dont_know;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (integer_onep (op0))
|
if (integer_onep (op0))
|
||||||
return op1;
|
return op1;
|
||||||
|
@ -420,6 +440,10 @@ chrec_fold_multiply (tree type,
|
||||||
chrec_fold_multiply (type, CHREC_LEFT (op1), op0),
|
chrec_fold_multiply (type, CHREC_LEFT (op1), op0),
|
||||||
chrec_fold_multiply (type, CHREC_RIGHT (op1), op0));
|
chrec_fold_multiply (type, CHREC_RIGHT (op1), op0));
|
||||||
|
|
||||||
|
CASE_CONVERT:
|
||||||
|
if (tree_contains_chrecs (op1, NULL))
|
||||||
|
return chrec_dont_know;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (integer_onep (op1))
|
if (integer_onep (op1))
|
||||||
return op0;
|
return op0;
|
||||||
|
|
Loading…
Reference in New Issue