OSDN Git Service

fortran/
authoreedelman <eedelman@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Dec 2005 11:58:09 +0000 (11:58 +0000)
committereedelman <eedelman@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Dec 2005 11:58:09 +0000 (11:58 +0000)
2005-12-21  Erik Edelmann  <eedelman@gcc.gnu.org>

        PR fortran/25423
        * parse.c (parse_where_block): break instead of "fall
         through" after parsing nested WHERE construct.

testsuite/
2005-12-21  Erik Edelmann  <eedelman@gcc.gnu.org>

        PR fortran/25423
        gfortran.dg/where_nested_1.f90: New.

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

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

index 8dbcc23..8fb7318 100644 (file)
@@ -1,3 +1,9 @@
+2005-12-21  Erik Edelmann  <eedelman@gcc.gnu.org>
+
+       PR fortran/25423
+       * parse.c (parse_where_block): break instead of "fall
+       through" after parsing nested WHERE construct.
+
 2005-12-18  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/25018
index f53a2e4..a0da448 100644 (file)
@@ -1668,7 +1668,7 @@ parse_where_block (void)
 
        case ST_WHERE_BLOCK:
          parse_where_block ();
-         /* Fall through */
+          break;
 
        case ST_ASSIGNMENT:
        case ST_WHERE:
index 090eaf8..2899ab2 100644 (file)
@@ -1,3 +1,8 @@
+2005-12-21  Erik Edelmann  <eedelman@gcc.gnu.org>
+
+       PR fortran/25423
+       gfortran.dg/where_nested_1.f90: New.
+
 2005-12-21  Kazu Hirata  <kazu@codesourcery.com>
 
        PR tree-optimization/25382.
diff --git a/gcc/testsuite/gfortran.dg/where_nested_1.f90 b/gcc/testsuite/gfortran.dg/where_nested_1.f90
new file mode 100644 (file)
index 0000000..c28cfcd
--- /dev/null
@@ -0,0 +1,26 @@
+! { dg-do compile }
+! PR 25423: Nested WHERE constructs.
+program nested_where
+
+    implicit none
+    integer :: a(4)
+    logical :: mask1(4) = (/.TRUE., .TRUE., .FALSE., .FALSE./), &
+               mask2(4) = (/.TRUE., .FALSE., .TRUE., .FALSE./)
+
+    where (mask1)
+        where (mask2)
+            a = 1
+        elsewhere
+            a = 2
+        end where
+    elsewhere
+        where (mask2)
+            a = 3
+        elsewhere
+            a = 4
+        end where
+    end where
+
+    print *, a
+
+end program nested_where