Hi,

I just committed as simple and obvious the patch below. This
fixes a 8/9/10 regression where a false positive with -Wdo-subscript
(which we know about) was compounded by an also invalid error.

Fixed by suppressing errors at the right time.

I will also commit the patch to the other affected branches.

Regards

        Thomas

2013-08-13  Thomas Koenig  <tkoe...@gcc.gnu.org>

        PR fortran/90563
        * frontend-passes.c (insert_index): Suppress errors while
        simplifying the resulting expression.

2013-08-13  Thomas Koenig  <tkoe...@gcc.gnu.org>

        PR fortran/90563
        * gfortran.dg/do_subsript_5.f90: New test.
Index: testsuite/gfortran.dg/do_subscript_5.f90
===================================================================
--- testsuite/gfortran.dg/do_subscript_5.f90	(Revision 274394)
+++ testsuite/gfortran.dg/do_subscript_5.f90	(Arbeitskopie)
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-additional-options "-Wdo-subscript" }
 ! PR 90563 - this used to be rejected, wrongly
 ! Original test case by Tobias Neumann
 program test
@@ -9,9 +10,11 @@
 
       p = 0.0
 
-      do j=1,6
+      ! The following warnings are actually bogus, but we are not yet
+      ! clever enough to suppress them.
+      do j=1,6 ! { dg-warning "out of bounds" }
           if (j<5) then
-              p(j) = p(swap(j))
+              p(j) = p(swap(j)) ! { dg-warning "out of bounds" }
           endif
       enddo
 end program
! { dg-do compile }
! { dg-additional-options "-Wdo-subscript" }
! PR 90563 - this used to be rejected, wrongly
! Original test case by Tobias Neumann
program test
      implicit none
      integer, parameter :: swap(4) = [2,1,3,4]
      real :: p(20)
      integer :: j

      p = 0.0

      ! The following warnings are actually bogus, but we are not yet
      ! clever enough to suppress them.
      do j=1,6 ! { dg-warning "out of bounds" }
          if (j<5) then
              p(j) = p(swap(j)) ! { dg-warning "out of bounds" }
          endif
      enddo
end program

Reply via email to