diff options
author | Richard Guenther <rguenther@suse.de> | 2007-10-19 11:25:55 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2007-10-19 11:25:55 +0000 |
commit | 1a8076fc5ed412f28e469fecb567dd223070b19d (patch) | |
tree | ff0365f8e88da673e0d9256f770f8b1d474f827b /gcc | |
parent | 213ce6f2c0708ec60e77e0b91cbb5b51b824775c (diff) | |
download | gcc-1a8076fc5ed412f28e469fecb567dd223070b19d.zip gcc-1a8076fc5ed412f28e469fecb567dd223070b19d.tar.gz gcc-1a8076fc5ed412f28e469fecb567dd223070b19d.tar.bz2 |
re PR tree-optimization/32921 (Revision 126326 causes 12% slowdown)
2007-10-19 Richard Guenther <rguenther@suse.de>
PR middle-end/32921
* tree.c (build_array_type): Do not re-layout unbound array
types.
* gfortran.dg/pr32921.f: New testcase.
From-SVN: r129484
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr32921.f | 49 | ||||
-rw-r--r-- | gcc/tree.c | 2 |
4 files changed, 61 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f7454c5..5756ae8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-10-19 Richard Guenther <rguenther@suse.de> + + PR middle-end/32921 + * tree.c (build_array_type): Do not re-layout unbound array + types. + 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk> * config/mips/mips.c (mips_canonicalize_comparison): Check diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5cbf244..a22c812 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-10-19 Richard Guenther <rguenther@suse.de> + + PR middle-end/32921 + * gfortran.dg/pr32921.f: New testcase. + 2007-10-18 Benjamin Kosnik <bkoz@redhat.com> * g++.old-deja/g++.robertl/eb130.C: Adjust include paths. diff --git a/gcc/testsuite/gfortran.dg/pr32921.f b/gcc/testsuite/gfortran.dg/pr32921.f new file mode 100644 index 0000000..d110301 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr32921.f @@ -0,0 +1,49 @@ +! { dg-do compile } +! { dg-options "-O2 -fdump-tree-lim" } +! gfortran -c -m32 -O2 -S junk.f +! + MODULE LES3D_DATA + + IMPLICIT REAL*8 (A-H,O-Z) + + PARAMETER ( NSPECI = 1, ND = 7 + NSPECI ) + + INTEGER IMAX + + DOUBLE PRECISION,ALLOCATABLE,DIMENSION(:,:,:) :: + > UAV,QAV + + + END MODULE LES3D_DATA +!--------------------------------------------------------------------- +!------------------------------------------------------------------------ + SUBROUTINE FLUXI() + + USE LES3D_DATA + IMPLICIT REAL*8(A-H,O-Z) + + ALLOCATABLE QS(:) + + ALLOCATE( QS(0:IMAX)) + QS=0D0 + + RETURN + END +!------------------------------------------------------------------------ +!------------------------------------------------------------------------ + SUBROUTINE EXTRAPI() + + USE LES3D_DATA + IMPLICIT REAL*8(A-H,O-Z) + + I1 = 0 + I2 = IMAX - 1 + + DO I = I1, I2 + UAV(I,1,2) = QAV(I,1,2) + END DO + + RETURN + END +! { dg-final { scan-tree-dump-times "stride" 6 "lim" } } +! { dg-final { cleanup-tree-dump "lim" } } @@ -5665,7 +5665,7 @@ build_array_type (tree elt_type, tree index_type) hashcode = iterative_hash_object (TYPE_HASH (index_type), hashcode); t = type_hash_canon (hashcode, t); - if (!COMPLETE_TYPE_P (t)) + if (!COMPLETE_OR_UNBOUND_ARRAY_TYPE_P (t)) layout_type (t); if (TYPE_CANONICAL (t) == t) |