re PR fortran/71961 (178.galgel in SPEC CPU 2000 is miscompiled)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Sun, 7 Aug 2016 13:24:32 +0000 (13:24 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Sun, 7 Aug 2016 13:24:32 +0000 (13:24 +0000)
2016-08-07  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/71961
* gfortran.dg/matmul_10.f90:  New testcase.

From-SVN: r239220

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/matmul_10.f90 [new file with mode: 0644]

index fece69cab09319f7dd8220300e72fc6739efb7fd..bc95f00edaaca5ca663cad70f2a8dad7c3a090de 100644 (file)
@@ -1,3 +1,8 @@
+2016-08-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/71961
+       * gfortran.dg/matmul_10.f90:  New testcase.
+
 2016-08-07  Jan Hubicka  <hubicka@ucw.cz>
 
        * gcc.dg/tree-ssa/ssa-dom-thread-7.c: Update testcase.
diff --git a/gcc/testsuite/gfortran.dg/matmul_10.f90 b/gcc/testsuite/gfortran.dg/matmul_10.f90
new file mode 100644 (file)
index 0000000..55f1c9c
--- /dev/null
@@ -0,0 +1,22 @@
+! { dg-do run }
+! { dg-options "-Warray-temporaries" }
+! PR 71961 - no array temporary was created.
+! Original test case by Joost VandeVondele
+program main
+  implicit none
+  integer :: i
+  integer, dimension(:,:), pointer :: a
+  integer, dimension(:,:), allocatable :: b
+  ALLOCATE(a(4,4),b(4,2))
+  a=1 ; b=2
+  a(:,1:2)=matmul(a(:,1:4),b(:,:)) ! { dg-warning "Creating array temporary" }
+  if (any(a /= reshape((/8,8,8,8,8,8,8,8,1,1,1,1,1,1,1,1/),(/4,4/)))) &
+       call abort
+  a = reshape([((-1**i)*i,i=1,16)],[4,4])
+  b = reshape([((-1**(i-1))*i**2,i=1,8)],[4,2])
+  b(1:2,1:2) = matmul(a(1:2,:),b) ! { dg-warning "Creating array temporary" }
+  if (any(b /= reshape([310, 340, -9, -16, 1478, 1652, -49, -64],[4,2]))) &
+       call abort
+  deallocate(a)
+  deallocate(b)
+end program main