]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/25423 (Error with nested where statements)
authorErik Edelmann <eedelman@gcc.gnu.org>
Wed, 21 Dec 2005 11:58:09 +0000 (11:58 +0000)
committerErik Edelmann <eedelman@gcc.gnu.org>
Wed, 21 Dec 2005 11:58:09 +0000 (11:58 +0000)
fortran/
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.

From-SVN: r108902

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

index 8dbcc233b448e3a8755ae536fdc30ec11b9b4d89..8fb73185f4a0fa1f33bd0238154e419a2c496399 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 f53a2e4e5c78943a4c09b5f177b9088bb3cce4ee..a0da4480b8b9d77d37dda08e403f12b623d8ce20 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 090eaf863f511a3ba6eb2f7ccab82edb2355194d..2899ab208b91dbb4397e154ae9417c1c8c5a80fb 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