aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gfortran.dg/intrinsic_actual_2.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gfortran.dg/intrinsic_actual_2.f90')
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/intrinsic_actual_2.f9044
1 files changed, 44 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/intrinsic_actual_2.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/intrinsic_actual_2.f90
new file mode 100644
index 000000000..d7a9c0d87
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gfortran.dg/intrinsic_actual_2.f90
@@ -0,0 +1,44 @@
+! { dg-do compile }
+! Tests the fix for PR29387, in which array valued arguments of
+! LEN and ASSOCIATED would cause an ICE.
+!
+! Contributed by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+!
+ integer :: ans
+ TYPE T1
+ INTEGER, POINTER :: I=>NULL()
+ END TYPE T1
+ type(T1), pointer :: tar(:)
+
+ character(20) res
+
+ j = 10
+ PRINT *, LEN(SUB(8)), ans
+ PRINT *, LEN(SUB(j)), ans
+! print *, len(SUB(j + 2)//"a"), ans ! This still fails (no charlen).
+ print *, len(bar(2)), ans
+
+ IF(.NOT.ASSOCIATED(F1(10))) CALL ABORT()
+ deallocate (tar)
+
+CONTAINS
+
+ FUNCTION SUB(I)
+ CHARACTER(LEN=I) :: SUB(1)
+ ans = LEN(SUB(1))
+ SUB = ""
+ END FUNCTION
+
+ FUNCTION BAR(I)
+ CHARACTER(LEN=I*10) :: BAR(1)
+ ans = LEN(BAR)
+ BAR = ""
+ END FUNCTION
+
+ FUNCTION F1(I) RESULT(R)
+ TYPE(T1), DIMENSION(:), POINTER :: R
+ INTEGER :: I
+ ALLOCATE(tar(I))
+ R => tar
+ END FUNCTION F1
+END