revert: re PR fortran/83522 (ICE on allocatable string reference, string(:)(:))
authorTobias Burnus <burnus@net-b.de>
Thu, 11 Oct 2018 19:37:28 +0000 (21:37 +0200)
committerTobias Burnus <burnus@gcc.gnu.org>
Thu, 11 Oct 2018 19:37:28 +0000 (21:37 +0200)
2018-10-11  Tobias Burnus <burnus@net-b.de>

        Revert:
        2018-10-09  Tobias Burnus <burnus@net-b.de>

        PR fortran/83522
        * resolve.c (resolve_ref): Reject nonscalar
        substring references.

2018-10-11  Tobias Burnus <burnus@net-b.de>

        Revert:
        2018-10-09  Tobias Burnus <burnus@net-b.de>

        PR fortran/83522
        * gfortran.dg/actual_array_substr_1.f90: Add dg-error,
        change to dg-do compile.
        * gfortran.dg/actual_array_substr_2.f90: Ditto.
        * gfortran.dg/array_initializer_1.f90: Use array
        element not size-one section.
        * gfortran.dg/array_substring.f90: New.

From-SVN: r265059

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/actual_array_substr_1.f90
gcc/testsuite/gfortran.dg/actual_array_substr_2.f90
gcc/testsuite/gfortran.dg/array_substring.f90 [deleted file]

index 0a7e5f5b76106c7ebab734ff23c63d07ae4513c1..ac2bf3a49ef6ec421176e4717ce875ca1d36b9c3 100644 (file)
@@ -1,3 +1,12 @@
+2018-10-11  Tobias Burnus <burnus@net-b.de>
+
+       Revert:
+       2018-10-09  Tobias Burnus <burnus@net-b.de>
+
+       PR fortran/83522
+       * resolve.c (resolve_ref): Reject nonscalar
+       substring references.
+
 2018-10-09  David Malcolm  <dmalcolm@redhat.com>
 
        * cpp.c (gfc_cpp_init_0): Update for renamings.
index 4ec881e5d782d618dddde3f3c009ae21ef7399a8..87e65df5f4e83234900d53b3be63fb4773d2b3e9 100644 (file)
@@ -5129,13 +5129,6 @@ resolve_ref (gfc_expr *expr)
          break;
 
        case REF_SUBSTRING:
-         /* F2008, R610 alias F2018, R908.  */
-         if (current_part_dimension || seen_part_dimension)
-           {
-             gfc_error ("Substring reference of nonscalar not permitted at %L",
-                        &expr->where);
-             return false;
-           }
          break;
        }
 
index f026cb260648a6b5329f6087bcc557a9f60bd3cc..3ee2817de00a6b484d31632a30dbe2cfe11b4121 100644 (file)
@@ -1,3 +1,16 @@
+2018-10-11  Tobias Burnus <burnus@net-b.de>
+
+       Revert:
+       2018-10-09  Tobias Burnus <burnus@net-b.de>
+
+       PR fortran/83522
+       * gfortran.dg/actual_array_substr_1.f90: Add dg-error,
+       change to dg-do compile.
+       * gfortran.dg/actual_array_substr_2.f90: Ditto.
+       * gfortran.dg/array_initializer_1.f90: Use array
+       element not size-one section.
+       * gfortran.dg/array_substring.f90: New.
+
 2018-10-11  Wilco Dijkstra  <wdijkstr@arm.com>
 
        PR target/87511
index d992f45f465795712cece9b4b7c99fabccdd0d48..7c10c7020eb30cde5c83c9ab05af1fde1cbb5826 100644 (file)
@@ -1,17 +1,15 @@
-! { dg-do compile }
+! { dg-do run }
 ! Test fix of PR28118, in which a substring reference to an
 ! actual argument with an array reference would cause a segfault.
 !
-! Revised for PR fortran/83522
-!
 ! Contributed by Paul Thomas  <pault@gcc.gnu.org>
 !
 program gfcbug33\r
   character(12) :: a(2)
   a(1) = "abcdefghijkl"
   a(2) = "mnopqrstuvwx"
-  call foo ((a(2:1:-1)(6:))) ! { dg-error "Substring reference of nonscalar not permitted" }
-  call bar ((a(:)(7:11))) ! { dg-error "Substring reference of nonscalar not permitted" }
+  call foo ((a(2:1:-1)(6:)))
+  call bar ((a(:)(7:11)))
 contains
   subroutine foo (chr)
     character(7) :: chr(:)
index 958ab418a43e0e46dff28dabfbbf492155eeb6f4..fed51342ee0a4c1779ebb55c4739f01fe23b36f5 100644 (file)
@@ -1,12 +1,10 @@
-! { dg-do compile }
+! { dg-do run }
 ! Tests the fix for pr28174, in which the fix for pr28118 was
 ! corrupting the character lengths of arrays that shared a
 ! character length structure.  In addition, in developing the
 ! fix, it was noted that intent(out/inout) arguments were not
 ! getting written back to the calling scope.
 !
-! Revised for PR fortran/83522
-!
 ! Based on the testscase by Harald Anlauf  <anlauf@gmx.de>
 !
 program pr28174
@@ -22,7 +20,7 @@ program pr28174
   n = m - 4
 
 ! Make sure that variable substring references work.
-  call foo (a(:)(m:m+5), c(:)(n:m+2), d(:)(5:9)) ! { dg-error "Substring reference of nonscalar not permitted" }
+  call foo (a(:)(m:m+5), c(:)(n:m+2), d(:)(5:9))
   if (any (a .ne. teststring)) STOP 1
   if (any (b .ne. teststring)) STOP 2
   if (any (c .ne. (/"ab456789#hij", &
@@ -39,7 +37,8 @@ contains
 ! This next is not required by the standard but tests the
 ! functioning of the gfortran implementation.
 !   if (all (x(:)(3:7) .eq. y)) STOP 5
-    x = foostring (:)(5 : 4 + len (x)) ! { dg-error "Substring reference of nonscalar not permitted" }
-    y = foostring (:)(3 : 2 + len (y)) ! { dg-error "Substring reference of nonscalar not permitted" }
+    x = foostring (:)(5 : 4 + len (x))
+    y = foostring (:)(3 : 2 + len (y))
   end subroutine foo
 end program pr28174
+
diff --git a/gcc/testsuite/gfortran.dg/array_substring.f90 b/gcc/testsuite/gfortran.dg/array_substring.f90
deleted file mode 100644 (file)
index ea80556..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-! { dg-do compile }
-!
-! PR fortran/83522
-!
-! Contributed by urbanjost and Jerry DeLisle
-!
-program testit
-  character(len=:),allocatable :: strings(:)
-  integer :: i
-  strings=[character(len=2) :: 'AA','BB']
-  write(*,*)strings(:)(:)  ! { dg-error "Substring reference of nonscalar not permitted" }
-  !strings(:)(:) ! Parse error: "Invalid character in name"
-  strings(:)(:) = 'x'   ! { dg-error "Substring reference of nonscalar not permitted" }
-  do i=1, size(strings)
-    write(*,*)strings(i)(:)  ! This is valid and works
-  end do
-end program testit