summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/PR49268.f90
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/gfortran.dg/PR49268.f90
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/gfortran.dg/PR49268.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/PR49268.f9051
1 files changed, 51 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/PR49268.f90 b/gcc/testsuite/gfortran.dg/PR49268.f90
new file mode 100644
index 000000000..5b274cf48
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/PR49268.f90
@@ -0,0 +1,51 @@
+! { dg-do run }
+! { dg-options "-fcray-pointer" }
+
+! Test the fix for a runtime error
+! Contributed by Mike Kumbera <kumbera1@llnl.gov>
+
+ program bob
+ implicit none
+ integer*8 ipfoo
+ integer n,m,i,j
+ real*8 foo
+
+ common /ipdata/ ipfoo
+ common /ipsize/ n,m
+ POINTER ( ipfoo, foo(3,7) )
+
+ n=3
+ m=7
+
+ ipfoo=malloc(8*n*m)
+ do i=1,n
+ do j=1,m
+ foo(i,j)=1.d0
+ end do
+ end do
+ call use_foo()
+ end program bob
+
+
+ subroutine use_foo()
+ implicit none
+ integer n,m,i,j
+ integer*8 ipfoo
+ common /ipdata/ ipfoo
+ common /ipsize/ n,m
+ real*8 foo,boo
+
+ !fails if * is the last dimension
+ POINTER ( ipfoo, foo(n,*) )
+
+ !works if the last dimension is specified
+ !POINTER ( ipfoo, foo(n,m) )
+ boo=0.d0
+ do i=1,n
+ do j=1,m
+ boo=foo(i,j)+1.0
+ if (abs (boo - 2.0) .gt. 1e-6) call abort
+ end do
+ end do
+
+ end subroutine use_foo