aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8/gcc/testsuite/gfortran.dg/char_length_3.f90
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2013-03-28 11:14:20 -0700
committerBen Cheng <bccheng@google.com>2013-03-28 12:40:33 -0700
commitaf0c51ac87ab2a87caa03fa108f0d164987a2764 (patch)
tree4b8b470f7c5b69642fdab8d0aa1fbc148d02196b /gcc-4.8/gcc/testsuite/gfortran.dg/char_length_3.f90
parentd87cae247d39ebf4f5a6bf25c932a14d2fdb9384 (diff)
downloadtoolchain_gcc-af0c51ac87ab2a87caa03fa108f0d164987a2764.tar.gz
toolchain_gcc-af0c51ac87ab2a87caa03fa108f0d164987a2764.tar.bz2
toolchain_gcc-af0c51ac87ab2a87caa03fa108f0d164987a2764.zip
[GCC 4.8] Initial check-in of GCC 4.8.0
Change-Id: I0719d8a6d0f69b367a6ab6f10eb75622dbf12771
Diffstat (limited to 'gcc-4.8/gcc/testsuite/gfortran.dg/char_length_3.f90')
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/char_length_3.f9049
1 files changed, 49 insertions, 0 deletions
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/char_length_3.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/char_length_3.f90
new file mode 100644
index 000000000..97f7fb4c0
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/char_length_3.f90
@@ -0,0 +1,49 @@
+! { dg-do compile }
+! PR fortran/25071
+! Check if actual argument is too short
+!
+ program test
+ implicit none
+ character(len=10) :: v
+ character(len=10), target :: x
+ character(len=20), target :: y
+ character(len=30), target :: z
+ character(len=10), pointer :: ptr1
+ character(len=20), pointer :: ptr2
+ character(len=30), pointer :: ptr3
+ character(len=10), allocatable :: alloc1(:)
+ character(len=20), allocatable :: alloc2(:)
+ character(len=30), allocatable :: alloc3(:)
+ call foo(v) ! { dg-warning "actual argument shorter than of dummy" }
+ call foo(x) ! { dg-warning "actual argument shorter than of dummy" }
+ call foo(y)
+ call foo(z)
+ ptr1 => x
+ call foo(ptr1) ! { dg-warning "actual argument shorter than of dummy" }
+ call bar(ptr1) ! { dg-warning "Character length mismatch" }
+ ptr2 => y
+ call foo(ptr2)
+ call bar(ptr2)
+ ptr3 => z
+ call foo(ptr3)
+ call bar(ptr3) ! { dg-warning "Character length mismatch" }
+ allocate(alloc1(1))
+ allocate(alloc2(1))
+ allocate(alloc3(1))
+ call arr(alloc1) ! { dg-warning "Character length mismatch" }
+ call arr(alloc2)
+ call arr(alloc3) ! { dg-warning "Character length mismatch" }
+ contains
+ subroutine foo(y)
+ character(len=20) :: y
+ y = 'hello world'
+ end subroutine
+ subroutine bar(y)
+ character(len=20),pointer :: y
+ y = 'hello world'
+ end subroutine
+ subroutine arr(y)
+ character(len=20),allocatable :: y(:)
+ y(1) = 'hello world'
+ end subroutine
+ end