Split test to remove failing run time test and add check for ICE.
authorThomas Koenig <tkoenig@gcc.gnu.org>
Wed, 27 Apr 2022 16:40:18 +0000 (18:40 +0200)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Wed, 27 Apr 2022 16:40:18 +0000 (18:40 +0200)
gcc/testsuite/ChangeLog:

PR fortran/70673
PR fortran/78054
* gfortran.dg/pr70673.f90: Remove invalid statement.
* gfortran.dg/pr70673_2.f90: New test to check that
ICE does not re-appear.

gcc/testsuite/gfortran.dg/pr70673.f90
gcc/testsuite/gfortran.dg/pr70673_2.f90 [new file with mode: 0644]

index fa4bd2f..1449130 100644 (file)
@@ -16,7 +16,6 @@ contains
     a = a(2:3)      ! Make sure that temporary creation is not broken.
     if ((len (a) .ne. 2) .or. (a .ne. "el")) STOP 2
     deallocate (a)
-    a = a           ! This would ICE too.
   end subroutine s
 end module m
 
diff --git a/gcc/testsuite/gfortran.dg/pr70673_2.f90 b/gcc/testsuite/gfortran.dg/pr70673_2.f90
new file mode 100644 (file)
index 0000000..ba2ce2f
--- /dev/null
@@ -0,0 +1,25 @@
+! { dg-do compile }
+!
+! Test the fix for PR70673
+!
+! Contributed by David Kinniburgh  <davidgkinniburgh@yahoo.co.uk>
+!
+module m
+contains
+  subroutine s(inp)
+    character(*), intent(in) :: inp
+    character(:), allocatable :: a
+    a = a           ! This used to ICE.
+    a = inp
+    a = a           ! This used to ICE too
+    if ((len (a) .ne. 5) .or. (a .ne. "hello")) STOP 1
+    a = a(2:3)      ! Make sure that temporary creation is not broken.
+    if ((len (a) .ne. 2) .or. (a .ne. "el")) STOP 2
+    deallocate (a)
+    a = a           ! This would ICE too.
+  end subroutine s
+end module m
+
+  use m
+  call s("hello")
+end