re PR fortran/78290 (Gfortran incorrectly creates a copy of an array passed to an array pointer dummy argument)

2019-05-19  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/78290
	* gfortran.dg/pr78290.f90: New test.

From-SVN: r271379
This commit is contained in:
Thomas Koenig 2019-05-19 11:26:20 +00:00
parent 9e1a0b35e9
commit 20733f1b0d
2 changed files with 40 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2019-05-19 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/78290
* gfortran.dg/pr78290.f90: New test.
2019-05-19 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/88821

View file

@ -0,0 +1,35 @@
! { dg-do run }
! PR 78290 - used to give an ICE (with VOLATILE) and wrong
! code without it.
! Original test case by Andy Bennet.
PROGRAM main
IMPLICIT NONE
INTEGER,PARAMETER::KI=4
TYPE mytype
INTEGER(KIND=KI)::i=1_KI
END TYPE mytype
TYPE(mytype), DIMENSION(9),TARGET, SAVE::ta
INTEGER(KIND=KI),DIMENSION(3),TARGET, SAVE::ia = 3_KI
INTEGER(KIND=KI),DIMENSION(:),POINTER ::ia2 =>NULL()
INTEGER(KIND=KI),DIMENSION(:),POINTER ::ip =>NULL()
volatile::ip
ALLOCATE(ia2(5)); ia2=2_KI
ip=>ia
if (size(ip) /= 3) stop 1
CALL sub1(ip)
if (size(ip) /= 5) stop 2
if (any(ia /= [3,3,3])) stop 3
if (any (ip /= [2,2,2,2,2])) stop 4
ip=>ta%i
CONTAINS
SUBROUTINE sub1(ipa)
INTEGER(KIND=KI),DIMENSION(:),POINTER::ipa
ipa => ia2
END SUBROUTINE sub1
END PROGRAM main