1f35f863aSjeanPerier! RUN: bbc %s -emit-fir -hlfir=false --canonicalize -o - | FileCheck %s 2aab4263aSValentin Clement 3e217ebccSKiran Chandramohan! CHECK-LABEL: stop_test 4aab4263aSValentin Clementsubroutine stop_test() 5aab4263aSValentin Clement ! CHECK-DAG: %[[c0:.*]] = arith.constant 0 : i32 6aab4263aSValentin Clement ! CHECK-DAG: %[[false:.*]] = arith.constant false 7aab4263aSValentin Clement ! CHECK: fir.call @_Fortran{{.*}}StopStatement(%[[c0]], %[[false]], %[[false]]) 8aab4263aSValentin Clement ! CHECK-NEXT: fir.unreachable 9aab4263aSValentin Clement stop 10aab4263aSValentin Clementend subroutine 11aab4263aSValentin Clement 12e217ebccSKiran Chandramohan! CHECK-LABEL: stop_code 13ca53e049SValentin Clementsubroutine stop_code() 14ca53e049SValentin Clement stop 42 15ca53e049SValentin Clement ! CHECK-DAG: %[[c42:.*]] = arith.constant 42 : i32 16ca53e049SValentin Clement ! CHECK-DAG: %[[false:.*]] = arith.constant false 17ca53e049SValentin Clement ! CHECK: fir.call @_Fortran{{.*}}StopStatement(%[[c42]], %[[false]], %[[false]]) 18ca53e049SValentin Clement ! CHECK-NEXT: fir.unreachable 19ca53e049SValentin Clementend subroutine 20cc306740SValentin Clement 213348c083SValentin Clement! CHECK-LABEL: stop_error 223348c083SValentin Clementsubroutine stop_error() 233348c083SValentin Clement error stop 24ea88bb16SjeanPerier ! CHECK-DAG: %[[c_1:.*]] = arith.constant 1 : i32 25cc306740SValentin Clement ! CHECK-DAG: %[[true:.*]] = arith.constant true 26cc306740SValentin Clement ! CHECK-DAG: %[[false:.*]] = arith.constant false 27ea88bb16SjeanPerier ! CHECK: fir.call @_Fortran{{.*}}StopStatement(%[[c_1]], %[[true]], %[[false]]) 28cc306740SValentin Clement ! CHECK-NEXT: fir.unreachable 29cc306740SValentin Clementend subroutine 306518c409SValentin Clement 31e217ebccSKiran Chandramohan! CHECK-LABEL: stop_quiet 326518c409SValentin Clementsubroutine stop_quiet() 336518c409SValentin Clement logical :: b 346518c409SValentin Clement stop, quiet = b 356518c409SValentin Clement ! CHECK-DAG: %[[c0:.*]] = arith.constant 0 : i32 366518c409SValentin Clement ! CHECK-DAG: %[[false:.*]] = arith.constant false 376518c409SValentin Clement ! CHECK: %[[ALLOCA:.*]] = fir.alloca !fir.logical<4> {bindc_name = "b", uniq_name = "_QFstop_quietEb"} 386518c409SValentin Clement ! CHECK: %[[b:.*]] = fir.load %[[ALLOCA]] 396518c409SValentin Clement ! CHECK: %[[bi1:.*]] = fir.convert %[[b]] : (!fir.logical<4>) -> i1 406518c409SValentin Clement ! CHECK: fir.call @_Fortran{{.*}}StopStatement(%[[c0]], %[[false]], %[[bi1]]) 416518c409SValentin Clement ! CHECK-NEXT: fir.unreachable 426518c409SValentin Clementend subroutine 43a8d48fe0SValentin Clement 443348c083SValentin Clement! CHECK-LABEL: stop_quiet_constant 453348c083SValentin Clementsubroutine stop_quiet_constant() 463348c083SValentin Clement stop, quiet = .true. 473348c083SValentin Clement ! CHECK-DAG: %[[true:.*]] = arith.constant true 483348c083SValentin Clement ! CHECK-DAG: %[[false:.*]] = arith.constant false 493348c083SValentin Clement ! CHECK-DAG: %[[c0:.*]] = arith.constant 0 : i32 503348c083SValentin Clement ! CHECK: fir.call @_Fortran{{.*}}StopStatement(%[[c0]], %[[false]], %[[true]]) 513348c083SValentin Clement ! CHECK-NEXT: fir.unreachable 523348c083SValentin Clementend subroutine 533348c083SValentin Clement 543348c083SValentin Clement! CHECK-LABEL: stop_error_code_quiet 553348c083SValentin Clementsubroutine stop_error_code_quiet(b) 563348c083SValentin Clement logical :: b 573348c083SValentin Clement error stop 66, quiet = b 583348c083SValentin Clement ! CHECK-DAG: %[[c66:.*]] = arith.constant 66 : i32 593348c083SValentin Clement ! CHECK-DAG: %[[true:.*]] = arith.constant true 603348c083SValentin Clement ! CHECK-DAG: %[[b:.*]] = fir.load %arg0 613348c083SValentin Clement ! CHECK-DAG: %[[bi1:.*]] = fir.convert %[[b]] : (!fir.logical<4>) -> i1 623348c083SValentin Clement ! CHECK: fir.call @_Fortran{{.*}}StopStatement(%[[c66]], %[[true]], %[[bi1]]) 633348c083SValentin Clement ! CHECK-NEXT: fir.unreachable 643348c083SValentin Clementend subroutine 653348c083SValentin Clement 66e217ebccSKiran Chandramohan! CHECK-LABEL: stop_char_lit 67a8d48fe0SValentin Clementsubroutine stop_char_lit 68a8d48fe0SValentin Clement ! CHECK-DAG: %[[false:.*]] = arith.constant false 69a8d48fe0SValentin Clement ! CHECK-DAG: %[[five:.*]] = arith.constant 5 : index 70a8d48fe0SValentin Clement ! CHECK-DAG: %[[lit:.*]] = fir.address_of(@_QQ{{.*}}) : !fir.ref<!fir.char<1,5>> 71a8d48fe0SValentin Clement ! CHECK-DAG: %[[buff:.*]] = fir.convert %[[lit]] : (!fir.ref<!fir.char<1,5>>) -> !fir.ref<i8> 72a8d48fe0SValentin Clement ! CHECK-DAG: %[[len:.*]] = fir.convert %[[five]] : (index) -> i64 734cc9437aSTom Eccles ! CHECK: fir.call @{{.*}}StopStatementText(%[[buff]], %[[len]], %[[false]], %[[false]]) {{.*}}: 74a8d48fe0SValentin Clement ! CHECK-NEXT: fir.unreachable 75a8d48fe0SValentin Clement stop 'crash' 76a8d48fe0SValentin Clementend subroutine stop_char_lit 773348c083SValentin Clement 78*12ba74e1SValentin Clement (バレンタイン クレメン)! CHECK-DAG: func private @_Fortran{{.*}}StopStatement(i32, i1, i1) 79*12ba74e1SValentin Clement (バレンタイン クレメン)! CHECK-DAG: func private @_Fortran{{.*}}StopStatementText(!fir.ref<i8>, i64, i1, i1) 80