OSDN Git Service

2011-08-19 Mikael Morin <mikael.morin@sfr.fr>
authormikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 Aug 2011 23:20:30 +0000 (23:20 +0000)
committermikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 Aug 2011 23:20:30 +0000 (23:20 +0000)
PR fortran/50129
* parse.c (parse_where): Undo changes after emitting an error.

2011-08-19  Mikael Morin  <mikael.morin@sfr.fr>

PR fortran/50129
* gfortran.dg/where_3.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177918 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/parse.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/where_3.f90 [new file with mode: 0644]

index 6b55546..a361d53 100644 (file)
@@ -1,3 +1,8 @@
+2011-08-19  Mikael Morin  <mikael.morin@sfr.fr>
+
+       PR fortran/50129
+       * parse.c (parse_where): Undo changes after emitting an error. 
+
 2011-08-19  Jakub Jelinek  <jakub@redhat.com>
 
        PR fortran/49792
index aab711c..9b11086 100644 (file)
@@ -2778,6 +2778,7 @@ parse_where_block (void)
            {
              gfc_error ("ELSEWHERE statement at %C follows previous "
                         "unmasked ELSEWHERE");
+             reject_statement ();
              break;
            }
 
index b3ee4b3..7aae8a6 100644 (file)
@@ -1,3 +1,8 @@
+2011-08-19  Mikael Morin  <mikael.morin@sfr.fr>
+
+       PR fortran/50129
+       * gfortran.dg/where_3.f90: New test.
+
 2011-08-19  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR middle-end/49721
diff --git a/gcc/testsuite/gfortran.dg/where_3.f90 b/gcc/testsuite/gfortran.dg/where_3.f90
new file mode 100644 (file)
index 0000000..1507ad9
--- /dev/null
@@ -0,0 +1,15 @@
+! { dg-do compile }
+!
+! PR fortran/50129
+! ICE after reporting an error on a masked ELSEWHERE statement following an
+! unmasked one.
+!
+! Contributed by Joost Van de Vondele <Joost.VandeVondele@pci.uzh.ch>
+
+INTEGER :: I(3)
+WHERE (I>2)
+ELSEWHERE
+ELSEWHERE (I<1) ! { dg-error "follows previous unmasked ELSEWHERE" }
+END WHERE
+END
+