| ! 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 <anonymous> |
| ! CHECK: 1 PrintStmt: print* |
| print* |
| |
| ! CHECK: <<DoConstruct>> -> 8 |
| ! CHECK: 2 NonLabelDoStmt -> 7: do i = 1, 5 |
| ! CHECK: <<IfConstruct>> -> 7 |
| ! CHECK: 3 ^IfStmt [negate] -> 7: if(i <= 1 .or. i >= 5) cycle |
| ! CHECK: 6 ^PrintStmt: print*, i |
| ! CHECK: 5 EndIfStmt |
| ! CHECK: <<End IfConstruct>> |
| ! CHECK: 7 EndDoStmt -> 2: end do |
| ! CHECK: <<End DoConstruct>> |
| do i = 1, 5 |
| if (i <= 1 .or. i >= 5) cycle |
| print*, i |
| end do |
| |
| ! CHECK: 8 PrintStmt: print* |
| print* |
| |
| ! CHECK: <<DoConstruct>> -> 15 |
| ! CHECK: 9 NonLabelDoStmt -> 14: do i = 1, 5 |
| ! CHECK: <<IfConstruct>> -> 14 |
| ! CHECK: 10 ^IfStmt [negate] -> 14: if(i <= 1 .or. i >= 5) cycle |
| ! CHECK: 13 ^PrintStmt: print*, i |
| ! CHECK: 12 EndIfStmt |
| ! CHECK: <<End IfConstruct>> |
| ! CHECK: 14 EndDoStmt -> 9: 2 end do |
| ! CHECK: <<End DoConstruct>> |
| do i = 1, 5 |
| if (i <= 1 .or. i >= 5) cycle |
| print*, i |
| 2 end do |
| |
| ! CHECK: 15 PrintStmt: print* |
| print* |
| |
| ! CHECK:<<DoConstruct!>> -> 30 |
| ! CHECK: 16 NonLabelDoStmt -> 29: outer: do i = 1, 3 |
| ! CHECK: <<DoConstruct!>> -> 29 |
| ! CHECK: 17 ^NonLabelDoStmt -> 28: inner: do j = 1, 5 |
| ! CHECK: <<IfConstruct!>> -> 28 |
| ! CHECK: 18 ^IfStmt [negate] -> 28: if(j <= 1 .or. j >= 5) cycle inner |
| ! CHECK: <<IfConstruct!>> -> 28 |
| ! CHECK: 21 ^IfStmt [negate] -> 28: if(j == 3) goto 3 |
| ! CHECK: <<IfConstruct!>> -> 27 |
| ! CHECK: 24 ^IfStmt -> 27: if(j == 4) cycle outer |
| ! CHECK: 25 ^CycleStmt! -> 29: cycle outer |
| ! CHECK: 26 EndIfStmt |
| ! CHECK: <<End IfConstruct!>> |
| ! CHECK: 27 ^PrintStmt: print*, j |
| ! CHECK: 23 EndIfStmt |
| ! CHECK: <<End IfConstruct!>> |
| ! CHECK: 20 EndIfStmt |
| ! CHECK: <<End IfConstruct!>> |
| ! CHECK: 28 ^EndDoStmt -> 17: 3 end do inner |
| ! CHECK: <<End DoConstruct!>> |
| ! CHECK: 29 ^EndDoStmt -> 16: end do outer |
| ! CHECK:<<End DoConstruct!>> |
| 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:<<DoConstruct>> -> 40 |
| ! CHECK: 31 NonLabelDoStmt -> 39: do i = 1, 5 |
| ! CHECK: <<IfConstruct>> -> 39 |
| ! CHECK: 32 ^IfStmt [negate] -> 39: if(i == 3) goto 4 |
| ! CHECK: <<IfConstruct>> -> 39 |
| ! CHECK: 35 ^IfStmt [negate] -> 39: if(i <= 1 .or. i >= 5) cycle |
| ! CHECK: 38 ^PrintStmt: print*, i |
| ! CHECK: 37 EndIfStmt |
| ! CHECK: <<End IfConstruct>> |
| ! CHECK: 34 EndIfStmt |
| ! CHECK: <<End IfConstruct>> |
| ! CHECK: 39 EndDoStmt -> 31: 4 end do |
| ! CHECK:<<End DoConstruct>> |
| do i = 1, 5 |
| if (i == 3) goto 4 |
| if (i <= 1 .or. i >= 5) cycle |
| print*, i |
| 4 end do |
| end |