! RUN: bbc -fdebug-dump-pre-fir %s 2>&1 | FileCheck %s ! Note: PFT dump output is fairly stable, including node indexes and ! annotations, so all output is CHECKed. ! CHECK: 1 Program ! CHECK: 1 PrintStmt: print* print* ! CHECK: <> -> 8 ! CHECK: 2 NonLabelDoStmt -> 7: do i = 1, 5 ! CHECK: <> -> 7 ! CHECK: 3 ^IfStmt [negate] -> 7: if(i <= 1 .or. i >= 5) cycle ! CHECK: 6 ^PrintStmt: print*, i ! CHECK: 5 EndIfStmt ! CHECK: <> ! CHECK: 7 EndDoStmt -> 2: end do ! CHECK: <> do i = 1, 5 if (i <= 1 .or. i >= 5) cycle print*, i end do ! CHECK: 8 PrintStmt: print* print* ! CHECK: <> -> 15 ! CHECK: 9 NonLabelDoStmt -> 14: do i = 1, 5 ! CHECK: <> -> 14 ! CHECK: 10 ^IfStmt [negate] -> 14: if(i <= 1 .or. i >= 5) cycle ! CHECK: 13 ^PrintStmt: print*, i ! CHECK: 12 EndIfStmt ! CHECK: <> ! CHECK: 14 EndDoStmt -> 9: 2 end do ! CHECK: <> do i = 1, 5 if (i <= 1 .or. i >= 5) cycle print*, i 2 end do ! CHECK: 15 PrintStmt: print* print* ! CHECK:<> -> 30 ! CHECK: 16 NonLabelDoStmt -> 29: outer: do i = 1, 3 ! CHECK: <> -> 29 ! CHECK: 17 ^NonLabelDoStmt -> 28: inner: do j = 1, 5 ! CHECK: <> -> 28 ! CHECK: 18 ^IfStmt [negate] -> 28: if(j <= 1 .or. j >= 5) cycle inner ! CHECK: <> -> 28 ! CHECK: 21 ^IfStmt [negate] -> 28: if(j == 3) goto 3 ! CHECK: <> -> 27 ! CHECK: 24 ^IfStmt -> 27: if(j == 4) cycle outer ! CHECK: 25 ^CycleStmt! -> 29: cycle outer ! CHECK: 26 EndIfStmt ! CHECK: <> ! CHECK: 27 ^PrintStmt: print*, j ! CHECK: 23 EndIfStmt ! CHECK: <> ! CHECK: 20 EndIfStmt ! CHECK: <> ! CHECK: 28 ^EndDoStmt -> 17: 3 end do inner ! CHECK: <> ! CHECK: 29 ^EndDoStmt -> 16: end do outer ! CHECK:<> outer: do i = 1, 3 inner: do j = 1, 5 if (j <= 1 .or. j >= 5) cycle inner if (j == 3) goto 3 if (j == 4) cycle outer print*, j 3 end do inner end do outer ! CHECK: 30 ^PrintStmt: print* print* ! CHECK:<> -> 40 ! CHECK: 31 NonLabelDoStmt -> 39: do i = 1, 5 ! CHECK: <> -> 39 ! CHECK: 32 ^IfStmt [negate] -> 39: if(i == 3) goto 4 ! CHECK: <> -> 39 ! CHECK: 35 ^IfStmt [negate] -> 39: if(i <= 1 .or. i >= 5) cycle ! CHECK: 38 ^PrintStmt: print*, i ! CHECK: 37 EndIfStmt ! CHECK: <> ! CHECK: 34 EndIfStmt ! CHECK: <> ! CHECK: 39 EndDoStmt -> 31: 4 end do ! CHECK:<> do i = 1, 5 if (i == 3) goto 4 if (i <= 1 .or. i >= 5) cycle print*, i 4 end do end