brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 5591c09 Raw
67 lines · plain
1! RUN: bbc %s -emit-fir -hlfir=false -o - | FileCheck %s2 3! Test trivial goto statement4subroutine sub1()5goto 161 stop7end subroutine8! CHECK-LABEL: sub19! CHECK:   cf.br ^[[BB1:.*]]10! CHECK: ^[[BB1]]:11! CHECK:   {{.*}} fir.call @_FortranAStopStatement({{.*}}, {{.*}}, {{.*}}) {{.*}}: (i32, i1, i1) -> ()12! CHECK: }13 14! Test multiple goto statements15subroutine sub2()16goto 1171 goto 2182 goto 3193 stop20end subroutine21! CHECK-LABEL: sub222! CHECK:   cf.br ^[[BB1:.*]]23! CHECK: ^[[BB1]]:24! CHECK:   cf.br ^[[BB2:.*]]25! CHECK: ^[[BB2]]:26! CHECK:   cf.br ^[[BB3:.*]]27! CHECK: ^[[BB3]]:28! CHECK:   {{.*}} fir.call @_FortranAStopStatement({{.*}}, {{.*}}, {{.*}}) {{.*}}: (i32, i1, i1) -> ()29! CHECK: }30 31! Test goto which branches to a previous label32subroutine sub3()33pause341 goto 3352 stop363 goto 237end subroutine38! CHECK: sub339! CHECK:   {{.*}} fir.call @_FortranAPauseStatement() {{.*}}: () -> ()40! CHECK:   cf.br ^[[BB2:.*]]41! CHECK: ^[[BB1:.*]]: //42! CHECK:   {{.*}} fir.call @_FortranAStopStatement({{.*}}, {{.*}}, {{.*}}) {{.*}}: (i32, i1, i1) -> ()43! CHECK: ^[[BB2]]:44! CHECK:   cf.br ^[[BB1]]45! CHECK: }46 47! Test removal of blocks (pauses) which are not reachable48subroutine sub4()49pause501 goto 251pause522 goto 353pause543 goto 155pause56end subroutine57! CHECK-LABEL: sub458! CHECK:   {{.*}} fir.call @_FortranAPauseStatement() {{.*}}: () -> ()59! CHECK-NEXT:   cf.br ^[[BB1:.*]]60! CHECK-NEXT: ^[[BB1]]:61! CHECK-NEXT:   cf.br ^[[BB2:.*]]62! CHECK-NEXT: ^[[BB2]]:63! CHECK-NEXT:   cf.br ^[[BB3:.*]]64! CHECK-NEXT: ^[[BB3]]:65! CHECK-NEXT:   cf.br ^[[BB1]]66! CHECK-NEXT: }67