re PR middle-end/33816 (gimplification before build_array_type re-set alias set of arrays to zero)
2007-10-19 Richard Guenther <rguenther@suse.de> PR middle-end/33816 PR middle-end/32921 * stor-layout.c (layout_type): Assert that aggregates do not have their alias sets set. * alias.c (get_alias_set): Return alias set zero for incomplete types, return the alias set of the element for incomplete array types, but do not remember these. * gfortran.dg/pr32921.f: New testcase. From-SVN: r129491
This commit is contained in:
parent
77aadb5728
commit
36784d0e87
@ -1,3 +1,13 @@
|
||||
2007-10-19 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/33816
|
||||
PR middle-end/32921
|
||||
* stor-layout.c (layout_type): Assert that aggregates do not
|
||||
have their alias sets set.
|
||||
* alias.c (get_alias_set): Return alias set zero for incomplete
|
||||
types, return the alias set of the element for incomplete array
|
||||
types, but do not remember these.
|
||||
|
||||
2007-10-19 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
Revert
|
||||
|
12
gcc/alias.c
12
gcc/alias.c
@ -611,6 +611,18 @@ get_alias_set (tree t)
|
||||
if (TYPE_ALIAS_SET_KNOWN_P (t))
|
||||
return TYPE_ALIAS_SET (t);
|
||||
|
||||
/* We don't want to set TYPE_ALIAS_SET for incomplete types. */
|
||||
if (!COMPLETE_TYPE_P (t))
|
||||
{
|
||||
/* For arrays with unknown size the conservative answer is the
|
||||
alias set of the element type. */
|
||||
if (TREE_CODE (t) == ARRAY_TYPE)
|
||||
return get_alias_set (TREE_TYPE (t));
|
||||
|
||||
/* But return zero as a conservative answer for incomplete types. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* See if the language has special handling for this type. */
|
||||
set = lang_hooks.get_alias_set (t);
|
||||
if (set != -1)
|
||||
|
@ -1886,13 +1886,10 @@ layout_type (tree type)
|
||||
&& TREE_CODE (type) != QUAL_UNION_TYPE)
|
||||
finalize_type_size (type);
|
||||
|
||||
/* If an alias set has been set for this aggregate when it was incomplete,
|
||||
force it into alias set 0.
|
||||
This is too conservative, but we cannot call record_component_aliases
|
||||
here because some frontends still change the aggregates after
|
||||
layout_type. */
|
||||
if (AGGREGATE_TYPE_P (type) && TYPE_ALIAS_SET_KNOWN_P (type))
|
||||
TYPE_ALIAS_SET (type) = 0;
|
||||
/* We should never see alias sets on incomplete aggregates. And we
|
||||
should not call layout_type on not incomplete aggregates. */
|
||||
if (AGGREGATE_TYPE_P (type))
|
||||
gcc_assert (!TYPE_ALIAS_SET_KNOWN_P (type));
|
||||
}
|
||||
|
||||
/* Create and return a type for signed integers of PRECISION bits. */
|
||||
|
@ -1,3 +1,9 @@
|
||||
2007-10-19 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/33816
|
||||
PR middle-end/32921
|
||||
* gfortran.dg/pr32921.f: New testcase.
|
||||
|
||||
2007-10-19 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR libfortran/33544
|
||||
|
49
gcc/testsuite/gfortran.dg/pr32921.f
Normal file
49
gcc/testsuite/gfortran.dg/pr32921.f
Normal file
@ -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" } }
|
Loading…
Reference in New Issue
Block a user