aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gfortran.dg/used_types_10.f90
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
committerBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
commit1bc5aee63eb72b341f506ad058502cd0361f0d10 (patch)
treec607e8252f3405424ff15bc2d00aa38dadbb2518 /gcc-4.9/gcc/testsuite/gfortran.dg/used_types_10.f90
parent283a0bf58fcf333c58a2a92c3ebbc41fb9eb1fdb (diff)
downloadtoolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.gz
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.bz2
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.zip
Initial checkin of GCC 4.9.0 from trunk (r208799).
Change-Id: I48a3c08bb98542aa215912a75f03c0890e497dba
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gfortran.dg/used_types_10.f90')
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/used_types_10.f9071
1 files changed, 71 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/used_types_10.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/used_types_10.f90
new file mode 100644
index 000000000..4fbdc8e68
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gfortran.dg/used_types_10.f90
@@ -0,0 +1,71 @@
+! { dg-do compile }
+! Tests the fix for PR28959 in which interface derived types were
+! not always being associated.
+!
+! Contributed by Salvatore Filippone <sfilippone@uniroma2.it>
+!
+module derived_type_mod
+
+ type foo_dtype
+ integer, pointer :: v1(:)=>null()
+ end type foo_dtype
+
+
+end module derived_type_mod
+
+
+Module tools
+
+ interface foo_d_sub
+ subroutine cdalv(m, v, i, desc_a, info, flag)
+ use derived_type_mod
+ Integer, intent(in) :: m,i, v(:)
+ integer, intent(in), optional :: flag
+ integer, intent(out) :: info
+ Type(foo_dtype), intent(out) :: desc_a
+ end subroutine cdalv
+ end interface
+
+end module tools
+
+
+
+subroutine foo_bar(a,p,info)
+ use derived_type_mod
+ implicit none
+
+ type(foo_dtype), intent(in) :: a
+ type(foo_dtype), intent(inout) :: p
+ integer, intent(out) :: info
+
+ info=0
+
+ call inner_sub(info)
+
+
+ return
+
+
+contains
+
+ subroutine inner_sub(info)
+ use tools
+ implicit none
+
+ integer, intent(out) :: info
+
+ integer :: i, nt,iv(10)
+
+ i = 0
+ nt = 1
+
+ call foo_d_sub(nt,iv,i,p,info,flag=1)
+
+ return
+
+
+ end subroutine inner_sub
+
+
+
+end subroutine foo_bar