re PR fortran/28914 (Code inside loop hangs; outside loop runs normally; runs OK...
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Sun, 10 Sep 2006 04:58:29 +0000 (04:58 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Sun, 10 Sep 2006 04:58:29 +0000 (04:58 +0000)
2006-09-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/28914
* gfortran.dg/actual_array_constructor_3.f90: New test.

From-SVN: r116809

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

index cd0f6f7e59947e18b68c301891ba2023f6118ccd..3d877ed4c4e36b1f81f815d1504dc35d6728f79d 100644 (file)
@@ -1,3 +1,8 @@
+2006-09-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/28914
+       * gfortran.dg/actual_array_constructor_3.f90: New test.
+
 2006-09-09  Paolo Bonzini  <bonzini@gnu.org>
 
        PR testsuite/26778
diff --git a/gcc/testsuite/gfortran.dg/actual_array_constructor_3.f90 b/gcc/testsuite/gfortran.dg/actual_array_constructor_3.f90
new file mode 100644 (file)
index 0000000..5b0d28a
--- /dev/null
@@ -0,0 +1,25 @@
+! { dg-do run }
+! Tests the fix for pr28914, in which array constructors using the loop
+! variable within a do loop for the implied do loop of the constructor
+! would result in a corrupted do loop counter.
+!
+! Based on the testscase by Ed Korkven <kornkven@arsc.edu>
+!
+program pr28914
+  implicit none
+  integer n, i
+  parameter (n = 66000) ! Problem manifests for n > 65535
+  double precision a(n), summation
+
+  summation = 0.0
+  do i = 1, 1
+    a = (/ (i, i = 1, n) /) ! This is legal and was broken
+    a = sqrt(a)
+    summation = SUM(a)
+  enddo
+  summation = abs(summation - 11303932.9138271_8)
+  
+  if (summation.gt.0.00001)   call abort()
+end program pr28914
+
+