1f35f863aSjeanPerier! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck --check-prefixes=CHECK,CHECK-32 -DDEFAULT_INTEGER_SIZE=32 %s 2f35f863aSjeanPerier! RUN: %flang_fc1 -fdefault-integer-8 -emit-fir -flang-deprecated-no-hlfir %s -o - | FileCheck --check-prefixes=CHECK,CHECK-64 -DDEFAULT_INTEGER_SIZE=64 %s 32b55850dSValentin Clement 448b5a06dSLeandro Lupori! CHECK-LABEL: func @_QPname_only( 52b55850dSValentin Clement! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"}) { 648b5a06dSLeandro Luporisubroutine name_only(name) 72b55850dSValentin Clement character(len=32) :: name 82b55850dSValentin Clement call get_environment_variable(name) 948b5a06dSLeandro Lupori! CHECK-NOT: fir.call @_FortranAGetEnvVariable 102b55850dSValentin Clement! CHECK-NEXT: return 1148b5a06dSLeandro Luporiend subroutine name_only 122b55850dSValentin Clement 132b55850dSValentin Clement! CHECK-LABEL: func @_QPname_and_value_only( 142b55850dSValentin Clement! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"}, 152b55850dSValentin Clement! CHECK-SAME: %[[valueArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "value"}) { 162b55850dSValentin Clementsubroutine name_and_value_only(name, value) 172b55850dSValentin Clement character(len=32) :: name, value 182b55850dSValentin Clement call get_environment_variable(name, value) 192b55850dSValentin Clement! CHECK: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 208df59132SSlava Zakharin! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 212b55850dSValentin Clement! CHECK-NEXT: %[[valueUnbox:.*]]:2 = fir.unboxchar %[[valueArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 228df59132SSlava Zakharin! CHECK-NEXT: %[[valueCast:.*]] = fir.convert %[[valueUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 238df59132SSlava Zakharin! CHECK-NEXT: %[[nameBox:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 248df59132SSlava Zakharin! CHECK-NEXT: %[[valueBox:.*]] = fir.embox %[[valueCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 252b55850dSValentin Clement! CHECK-NEXT: %true = arith.constant true 2648b5a06dSLeandro Lupori! CHECK-NEXT: %[[length:.*]] = fir.absent !fir.box<none> 272b55850dSValentin Clement! CHECK-NEXT: %[[errmsg:.*]] = fir.absent !fir.box<none> 282b55850dSValentin Clement! CHECK-NEXT: %[[sourceFileString:.*]] = fir.address_of(@_QQcl{{.*}}) : !fir.ref<!fir.char<1,[[sourceFileLength:.*]]>> 2948b5a06dSLeandro Lupori! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 11]] : i32 308df59132SSlava Zakharin! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 318df59132SSlava Zakharin! CHECK-NEXT: %[[value:.*]] = fir.convert %[[valueBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 322b55850dSValentin Clement! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[sourceFileLength]]>>) -> !fir.ref<i8> 3348b5a06dSLeandro Lupori! CHECK-NEXT: %{{[0-9]+}} = fir.call @_FortranAGetEnvVariable(%[[name]], %[[value]], %[[length]], %true, %[[errmsg]], %[[sourceFile]], %[[sourceLine]]) {{.*}}: (!fir.box<none>, !fir.box<none>, !fir.box<none>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32 342b55850dSValentin Clement! CHECK-NEXT: return 352b55850dSValentin Clementend subroutine name_and_value_only 362b55850dSValentin Clement 372b55850dSValentin Clement! CHECK-LABEL: func @_QPname_and_length_only( 382b55850dSValentin Clement! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"}, 392b55850dSValentin Clement! CHECK-SAME: %[[lengthArg:.*]]: !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> {fir.bindc_name = "length"}) { 402b55850dSValentin Clementsubroutine name_and_length_only(name, length) 412b55850dSValentin Clement character(len=32) :: name 422b55850dSValentin Clement integer :: length 432b55850dSValentin Clement call get_environment_variable(name, LENGTH=length) 442b55850dSValentin Clement! CHECK: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 458df59132SSlava Zakharin! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 468df59132SSlava Zakharin! CHECK-NEXT: %[[nameBox:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 4748b5a06dSLeandro Lupori! CHECK-NEXT: %[[lengthBox:.*]] = fir.embox %arg1 : (!fir.ref<i[[DEFAULT_INTEGER_SIZE]]>) -> !fir.box<i[[DEFAULT_INTEGER_SIZE]]> 482b55850dSValentin Clement! CHECK-NEXT: %true = arith.constant true 4948b5a06dSLeandro Lupori! CHECK-NEXT: %[[value:.*]] = fir.absent !fir.box<none> 5048b5a06dSLeandro Lupori! CHECK-NEXT: %[[errmsg:.*]] = fir.absent !fir.box<none> 51fd389f46SFabian Mora! CHECK: %[[sourceFileString:.*]] = fir.address_of(@_QQclX{{.*}}) : !fir.ref<!fir.char<1,[[sourceFileLength:.*]]>> 5248b5a06dSLeandro Lupori! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 9]] : i32 538df59132SSlava Zakharin! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 5448b5a06dSLeandro Lupori! CHECK-NEXT: %[[length:.*]] = fir.convert %[[lengthBox]] : (!fir.box<i[[DEFAULT_INTEGER_SIZE]]>) -> !fir.box<none> 552b55850dSValentin Clement! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[sourceFileLength]]>>) -> !fir.ref<i8> 5648b5a06dSLeandro Lupori! CHECK-NEXT: %{{.*}} = fir.call @_FortranAGetEnvVariable(%[[name]], %[[value]], %[[length]], %true, %[[errmsg]], %[[sourceFile]], %[[sourceLine]]) {{.*}}: (!fir.box<none>, !fir.box<none>, !fir.box<none>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32 572b55850dSValentin Clementend subroutine name_and_length_only 582b55850dSValentin Clement 592b55850dSValentin Clement! CHECK-LABEL: func @_QPname_and_status_only( 602b55850dSValentin Clement! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"}, 612b55850dSValentin Clement! CHECK-SAME: %[[statusArg:.*]]: !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> {fir.bindc_name = "status"}) { 622b55850dSValentin Clementsubroutine name_and_status_only(name, status) 632b55850dSValentin Clement character(len=32) :: name 642b55850dSValentin Clement integer :: status 652b55850dSValentin Clement call get_environment_variable(name, STATUS=status) 662b55850dSValentin Clement! CHECK: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 678df59132SSlava Zakharin! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 688df59132SSlava Zakharin! CHECK-NEXT: %[[nameBox:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 692b55850dSValentin Clement! CHECK-NEXT: %true = arith.constant true 70189cb7dfSjeanPerier! CHECK-NEXT: %[[value:.*]] = fir.absent !fir.box<none> 7148b5a06dSLeandro Lupori! CHECK-NEXT: %[[length:.*]] = fir.absent !fir.box<none> 722b55850dSValentin Clement! CHECK-NEXT: %[[errmsg:.*]] = fir.absent !fir.box<none> 73fd389f46SFabian Mora! CHECK-NEXT: %[[sourceFileString:.*]] = fir.address_of(@_QQclX{{.*}}) : !fir.ref<!fir.char<1,[[sourceFileLength:.*]]>> 7448b5a06dSLeandro Lupori! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 9]] : i32 758df59132SSlava Zakharin! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 762b55850dSValentin Clement! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[sourceFileLength]]>>) -> !fir.ref<i8> 7748b5a06dSLeandro Lupori! CHECK-32-NEXT: %[[status:.*]] = fir.call @_FortranAGetEnvVariable(%[[name]], %[[value]], %[[length]], %true, %[[errmsg]], %[[sourceFile]], %[[sourceLine]]) {{.*}}: (!fir.box<none>, !fir.box<none>, !fir.box<none>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32 7848b5a06dSLeandro Lupori! CHECK-64-NEXT: %[[status32:.*]] = fir.call @_FortranAGetEnvVariable(%[[name]], %[[value]], %[[length]], %true, %[[errmsg]], %[[sourceFile]], %[[sourceLine]]) {{.*}}: (!fir.box<none>, !fir.box<none>, !fir.box<none>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32 79189cb7dfSjeanPerier! CHECK-64: %[[status:.*]] = fir.convert %[[status32]] : (i32) -> i64 80189cb7dfSjeanPerier! CHECK: fir.store %[[status]] to %[[statusArg]] : !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> 812b55850dSValentin Clementend subroutine name_and_status_only 822b55850dSValentin Clement 832b55850dSValentin Clement! CHECK-LABEL: func @_QPname_and_trim_name_only( 842b55850dSValentin Clement! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"}, 85fc43c4f0SKiran Chandramohan! CHECK-32-SAME: %[[trimNameArg:.*]]: !fir.ref<!fir.logical<4>> {fir.bindc_name = "trim_name"}) { 86fc43c4f0SKiran Chandramohan! CHECK-64-SAME: %[[trimNameArg:.*]]: !fir.ref<!fir.logical<8>> {fir.bindc_name = "trim_name"}) { 872b55850dSValentin Clementsubroutine name_and_trim_name_only(name, trim_name) 882b55850dSValentin Clement character(len=32) :: name 892b55850dSValentin Clement logical :: trim_name 902b55850dSValentin Clement call get_environment_variable(name, TRIM_NAME=trim_name) 9148b5a06dSLeandro Lupori ! CHECK-NOT: fir.call @_FortranAGetEnvVariable 922b55850dSValentin Clement ! CHECK-NEXT: return 932b55850dSValentin Clementend subroutine name_and_trim_name_only 942b55850dSValentin Clement 952b55850dSValentin Clement! CHECK-LABEL: func @_QPname_and_errmsg_only( 962b55850dSValentin Clement! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"}, 972b55850dSValentin Clement! CHECK-SAME: %[[errmsgArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "errmsg"}) { 982b55850dSValentin Clementsubroutine name_and_errmsg_only(name, errmsg) 992b55850dSValentin Clement character(len=32) :: name, errmsg 1002b55850dSValentin Clement call get_environment_variable(name, ERRMSG=errmsg) 1012b55850dSValentin Clement! CHECK: %[[errmsgUnbox:.*]]:2 = fir.unboxchar %[[errmsgArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 1028df59132SSlava Zakharin! CHECK-NEXT: %[[errmsgCast:.*]] = fir.convert %[[errmsgUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 1032b55850dSValentin Clement! CHECK-NEXT: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 1048df59132SSlava Zakharin! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 1058df59132SSlava Zakharin! CHECK-NEXT: %[[nameBox:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 1068df59132SSlava Zakharin! CHECK-NEXT: %[[errmsgBox:.*]] = fir.embox %[[errmsgCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 107189cb7dfSjeanPerier! CHECK-NEXT: %true = arith.constant true 108189cb7dfSjeanPerier! CHECK-NEXT: %[[value:.*]] = fir.absent !fir.box<none> 10948b5a06dSLeandro Lupori! CHECK-NEXT: %[[length:.*]] = fir.absent !fir.box<none> 110fd389f46SFabian Mora! CHECK-NEXT: %[[sourceFileString:.*]] = fir.address_of(@_QQclX{{.*}}) : !fir.ref<!fir.char<1,[[sourceFileLength:.*]]>> 11148b5a06dSLeandro Lupori! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 11]] : i32 1128df59132SSlava Zakharin! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 1138df59132SSlava Zakharin! CHECK-NEXT: %[[errmsg:.*]] = fir.convert %[[errmsgBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 1142b55850dSValentin Clement! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[sourceFileLength]]>>) -> !fir.ref<i8> 11548b5a06dSLeandro Lupori! CHECK-NEXT: %{{[0-9]+}} = fir.call @_FortranAGetEnvVariable(%[[name]], %[[value]], %[[length]], %true, %[[errmsg]], %[[sourceFile]], %[[sourceLine]]) {{.*}}: (!fir.box<none>, !fir.box<none>, !fir.box<none>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32 1162b55850dSValentin Clement! CHECK-NEXT: return 1172b55850dSValentin Clementend subroutine name_and_errmsg_only 1182b55850dSValentin Clement 1192b55850dSValentin Clement! CHECK-LABEL: func @_QPall_arguments( 1202b55850dSValentin Clement! CHECK-SAME: %[[nameArg:[^:]*]]: !fir.boxchar<1> {fir.bindc_name = "name"}, 1212b55850dSValentin Clement! CHECK-SAME: %[[valueArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "value"}, 1222b55850dSValentin Clement! CHECK-SAME: %[[lengthArg:[^:]*]]: !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> {fir.bindc_name = "length"}, 1232b55850dSValentin Clement! CHECK-SAME: %[[statusArg:.*]]: !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> {fir.bindc_name = "status"}, 124fc43c4f0SKiran Chandramohan! CHECK-32-SAME: %[[trimNameArg:.*]]: !fir.ref<!fir.logical<4>> {fir.bindc_name = "trim_name"}, 125fc43c4f0SKiran Chandramohan! CHECK-64-SAME: %[[trimNameArg:.*]]: !fir.ref<!fir.logical<8>> {fir.bindc_name = "trim_name"}, 1262b55850dSValentin Clement! CHECK-SAME: %[[errmsgArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "errmsg"}) { 1272b55850dSValentin Clementsubroutine all_arguments(name, value, length, status, trim_name, errmsg) 1282b55850dSValentin Clement character(len=32) :: name, value, errmsg 1292b55850dSValentin Clement integer :: length, status 1302b55850dSValentin Clement logical :: trim_name 1312b55850dSValentin Clement call get_environment_variable(name, value, length, status, trim_name, errmsg) 1322b55850dSValentin Clement! CHECK: %[[errmsgUnbox:.*]]:2 = fir.unboxchar %[[errmsgArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 1338df59132SSlava Zakharin! CHECK-NEXT: %[[errmsgCast:.*]] = fir.convert %[[errmsgUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 1342b55850dSValentin Clement! CHECK-NEXT: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 1358df59132SSlava Zakharin! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 1362b55850dSValentin Clement! CHECK-NEXT: %[[valueUnbox:.*]]:2 = fir.unboxchar %[[valueArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 1378df59132SSlava Zakharin! CHECK-NEXT: %[[valueCast:.*]] = fir.convert %[[valueUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 1388df59132SSlava Zakharin! CHECK-NEXT: %[[nameBoxed:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 1398df59132SSlava Zakharin! CHECK-NEXT: %[[valueBoxed:.*]] = fir.embox %[[valueCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 14048b5a06dSLeandro Lupori! CHECK-NEXT: %[[lengthBoxed:.*]] = fir.embox %[[lengthArg]] : (!fir.ref<i[[DEFAULT_INTEGER_SIZE]]>) -> !fir.box<i[[DEFAULT_INTEGER_SIZE]]> 1418df59132SSlava Zakharin! CHECK-NEXT: %[[errmsgBoxed:.*]] = fir.embox %[[errmsgCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 142189cb7dfSjeanPerier! CHECK: %[[trimName:.*]] = fir.if %{{.*}} -> (i1) { 143fc43c4f0SKiran Chandramohan! CHECK-32-NEXT: %[[trimNameLoaded:.*]] = fir.load %[[trimNameArg]] : !fir.ref<!fir.logical<4>> 144fc43c4f0SKiran Chandramohan! CHECK-64-NEXT: %[[trimNameLoaded:.*]] = fir.load %[[trimNameArg]] : !fir.ref<!fir.logical<8>> 145fc43c4f0SKiran Chandramohan! CHECK-32-NEXT: %[[trimCast:.*]] = fir.convert %[[trimNameLoaded]] : (!fir.logical<4>) -> i1 146fc43c4f0SKiran Chandramohan! CHECK-64-NEXT: %[[trimCast:.*]] = fir.convert %[[trimNameLoaded]] : (!fir.logical<8>) -> i1 147189cb7dfSjeanPerier! CHECK-NEXT: fir.result %[[trimCast]] : i1 148189cb7dfSjeanPerier! CHECK-NEXT: } else { 149189cb7dfSjeanPerier! CHECK-NEXT: %[[trueVal:.*]] = arith.constant true 150189cb7dfSjeanPerier! CHECK-NEXT: fir.result %[[trueVal]] : i1 151189cb7dfSjeanPerier! CHECK-NEXT: } 152fd389f46SFabian Mora! CHECK: %[[sourceFileString:.*]] = fir.address_of(@_QQclX[[fileString:.*]]) : !fir.ref<!fir.char<1,[[fileStringLength:.*]]>> 153fc43c4f0SKiran Chandramohan! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 22]] : i32 1548df59132SSlava Zakharin! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBoxed]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 1558df59132SSlava Zakharin! CHECK-NEXT: %[[value:.*]] = fir.convert %[[valueBoxed]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 15648b5a06dSLeandro Lupori! CHECK-NEXT: %[[length:.*]] = fir.convert %[[lengthBoxed]] : (!fir.box<i[[DEFAULT_INTEGER_SIZE]]>) -> !fir.box<none> 1578df59132SSlava Zakharin! CHECK-NEXT: %[[errmsg:.*]] = fir.convert %[[errmsgBoxed]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 1582b55850dSValentin Clement! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[fileStringLength]]>>) -> !fir.ref<i8> 15948b5a06dSLeandro Lupori! CHECK-32-NEXT: %[[status:.*]] = fir.call @_FortranAGetEnvVariable(%[[name]], %[[value]], %[[length]], %[[trimName]], %[[errmsg]], %[[sourceFile]], %[[sourceLine]]) {{.*}}: (!fir.box<none>, !fir.box<none>, !fir.box<none>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32 16048b5a06dSLeandro Lupori! CHECK-64-NEXT: %[[status32:.*]] = fir.call @_FortranAGetEnvVariable(%[[name]], %[[value]], %[[length]], %[[trimName]], %[[errmsg]], %[[sourceFile]], %[[sourceLine]]) {{.*}}: (!fir.box<none>, !fir.box<none>, !fir.box<none>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32 161189cb7dfSjeanPerier! CHECK-64: %[[status:.*]] = fir.convert %[[status32]] : (i32) -> i64 162189cb7dfSjeanPerier! CHECK: fir.store %[[status]] to %[[statusArg]] : !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> 1632b55850dSValentin Clementend subroutine all_arguments 164*1afd4b7dSDavid Truby 165*1afd4b7dSDavid Truby 166*1afd4b7dSDavid Truby! CHECK-LABEL: func @_QPgetenv_name_only( 167*1afd4b7dSDavid Truby! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"}) { 168*1afd4b7dSDavid Trubysubroutine getenv_name_only(name) 169*1afd4b7dSDavid Truby character(len=32) :: name 170*1afd4b7dSDavid Truby call getenv(name) 171*1afd4b7dSDavid Truby! CHECK-NOT: fir.call @_FortranAGetEnvVariable 172*1afd4b7dSDavid Truby! CHECK-NEXT: return 173*1afd4b7dSDavid Trubyend subroutine getenv_name_only 174*1afd4b7dSDavid Truby 175*1afd4b7dSDavid Truby! CHECK-LABEL: func @_QPgetenv_name_and_value_only( 176*1afd4b7dSDavid Truby! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"}, 177*1afd4b7dSDavid Truby! CHECK-SAME: %[[valueArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "value"}) { 178*1afd4b7dSDavid Trubysubroutine getenv_name_and_value_only(name, value) 179*1afd4b7dSDavid Truby character(len=32) :: name, value 180*1afd4b7dSDavid Truby call getenv(name, value) 181*1afd4b7dSDavid Truby! CHECK: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 182*1afd4b7dSDavid Truby! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 183*1afd4b7dSDavid Truby! CHECK-NEXT: %[[valueUnbox:.*]]:2 = fir.unboxchar %[[valueArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 184*1afd4b7dSDavid Truby! CHECK-NEXT: %[[valueCast:.*]] = fir.convert %[[valueUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 185*1afd4b7dSDavid Truby! CHECK-NEXT: %[[nameBox:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 186*1afd4b7dSDavid Truby! CHECK-NEXT: %[[valueBox:.*]] = fir.embox %[[valueCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 187*1afd4b7dSDavid Truby! CHECK-NEXT: %true = arith.constant true 188*1afd4b7dSDavid Truby! CHECK-NEXT: %[[length:.*]] = fir.absent !fir.box<none> 189*1afd4b7dSDavid Truby! CHECK-NEXT: %[[errmsg:.*]] = fir.absent !fir.box<none> 190*1afd4b7dSDavid Truby! CHECK-NEXT: %[[sourceFileString:.*]] = fir.address_of(@_QQcl{{.*}}) : !fir.ref<!fir.char<1,[[sourceFileLength:.*]]>> 191*1afd4b7dSDavid Truby! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 11]] : i32 192*1afd4b7dSDavid Truby! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 193*1afd4b7dSDavid Truby! CHECK-NEXT: %[[value:.*]] = fir.convert %[[valueBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 194*1afd4b7dSDavid Truby! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[sourceFileLength]]>>) -> !fir.ref<i8> 195*1afd4b7dSDavid Truby! CHECK-NEXT: %{{[0-9]+}} = fir.call @_FortranAGetEnvVariable(%[[name]], %[[value]], %[[length]], %true, %[[errmsg]], %[[sourceFile]], %[[sourceLine]]) {{.*}}: (!fir.box<none>, !fir.box<none>, !fir.box<none>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32 196*1afd4b7dSDavid Truby! CHECK-NEXT: return 197*1afd4b7dSDavid Trubyend subroutine getenv_name_and_value_only 198*1afd4b7dSDavid Truby 199*1afd4b7dSDavid Truby! CHECK-LABEL: func @_QPgetenv_name_and_length_only( 200*1afd4b7dSDavid Truby! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"}, 201*1afd4b7dSDavid Truby! CHECK-SAME: %[[lengthArg:.*]]: !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> {fir.bindc_name = "length"}) { 202*1afd4b7dSDavid Trubysubroutine getenv_name_and_length_only(name, length) 203*1afd4b7dSDavid Truby character(len=32) :: name 204*1afd4b7dSDavid Truby integer :: length 205*1afd4b7dSDavid Truby call getenv(name, LENGTH=length) 206*1afd4b7dSDavid Truby! CHECK: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 207*1afd4b7dSDavid Truby! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 208*1afd4b7dSDavid Truby! CHECK-NEXT: %[[nameBox:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 209*1afd4b7dSDavid Truby! CHECK-NEXT: %[[lengthBox:.*]] = fir.embox %arg1 : (!fir.ref<i[[DEFAULT_INTEGER_SIZE]]>) -> !fir.box<i[[DEFAULT_INTEGER_SIZE]]> 210*1afd4b7dSDavid Truby! CHECK-NEXT: %true = arith.constant true 211*1afd4b7dSDavid Truby! CHECK-NEXT: %[[value:.*]] = fir.absent !fir.box<none> 212*1afd4b7dSDavid Truby! CHECK-NEXT: %[[errmsg:.*]] = fir.absent !fir.box<none> 213*1afd4b7dSDavid Truby! CHECK: %[[sourceFileString:.*]] = fir.address_of(@_QQclX{{.*}}) : !fir.ref<!fir.char<1,[[sourceFileLength:.*]]>> 214*1afd4b7dSDavid Truby! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 9]] : i32 215*1afd4b7dSDavid Truby! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 216*1afd4b7dSDavid Truby! CHECK-NEXT: %[[length:.*]] = fir.convert %[[lengthBox]] : (!fir.box<i[[DEFAULT_INTEGER_SIZE]]>) -> !fir.box<none> 217*1afd4b7dSDavid Truby! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[sourceFileLength]]>>) -> !fir.ref<i8> 218*1afd4b7dSDavid Truby! CHECK-NEXT: %{{.*}} = fir.call @_FortranAGetEnvVariable(%[[name]], %[[value]], %[[length]], %true, %[[errmsg]], %[[sourceFile]], %[[sourceLine]]) {{.*}}: (!fir.box<none>, !fir.box<none>, !fir.box<none>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32 219*1afd4b7dSDavid Trubyend subroutine getenv_name_and_length_only 220*1afd4b7dSDavid Truby 221*1afd4b7dSDavid Truby! CHECK-LABEL: func @_QPgetenv_name_and_status_only( 222*1afd4b7dSDavid Truby! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"}, 223*1afd4b7dSDavid Truby! CHECK-SAME: %[[statusArg:.*]]: !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> {fir.bindc_name = "status"}) { 224*1afd4b7dSDavid Trubysubroutine getenv_name_and_status_only(name, status) 225*1afd4b7dSDavid Truby character(len=32) :: name 226*1afd4b7dSDavid Truby integer :: status 227*1afd4b7dSDavid Truby call getenv(name, STATUS=status) 228*1afd4b7dSDavid Truby! CHECK: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 229*1afd4b7dSDavid Truby! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 230*1afd4b7dSDavid Truby! CHECK-NEXT: %[[nameBox:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 231*1afd4b7dSDavid Truby! CHECK-NEXT: %true = arith.constant true 232*1afd4b7dSDavid Truby! CHECK-NEXT: %[[value:.*]] = fir.absent !fir.box<none> 233*1afd4b7dSDavid Truby! CHECK-NEXT: %[[length:.*]] = fir.absent !fir.box<none> 234*1afd4b7dSDavid Truby! CHECK-NEXT: %[[errmsg:.*]] = fir.absent !fir.box<none> 235*1afd4b7dSDavid Truby! CHECK-NEXT: %[[sourceFileString:.*]] = fir.address_of(@_QQclX{{.*}}) : !fir.ref<!fir.char<1,[[sourceFileLength:.*]]>> 236*1afd4b7dSDavid Truby! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 9]] : i32 237*1afd4b7dSDavid Truby! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 238*1afd4b7dSDavid Truby! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[sourceFileLength]]>>) -> !fir.ref<i8> 239*1afd4b7dSDavid Truby! CHECK-32-NEXT: %[[status:.*]] = fir.call @_FortranAGetEnvVariable(%[[name]], %[[value]], %[[length]], %true, %[[errmsg]], %[[sourceFile]], %[[sourceLine]]) {{.*}}: (!fir.box<none>, !fir.box<none>, !fir.box<none>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32 240*1afd4b7dSDavid Truby! CHECK-64-NEXT: %[[status32:.*]] = fir.call @_FortranAGetEnvVariable(%[[name]], %[[value]], %[[length]], %true, %[[errmsg]], %[[sourceFile]], %[[sourceLine]]) {{.*}}: (!fir.box<none>, !fir.box<none>, !fir.box<none>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32 241*1afd4b7dSDavid Truby! CHECK-64: %[[status:.*]] = fir.convert %[[status32]] : (i32) -> i64 242*1afd4b7dSDavid Truby! CHECK: fir.store %[[status]] to %[[statusArg]] : !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> 243*1afd4b7dSDavid Trubyend subroutine getenv_name_and_status_only 244*1afd4b7dSDavid Truby 245*1afd4b7dSDavid Truby! CHECK-LABEL: func @_QPgetenv_name_and_trim_name_only( 246*1afd4b7dSDavid Truby! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"}, 247*1afd4b7dSDavid Truby! CHECK-32-SAME: %[[trimNameArg:.*]]: !fir.ref<!fir.logical<4>> {fir.bindc_name = "trim_name"}) { 248*1afd4b7dSDavid Truby! CHECK-64-SAME: %[[trimNameArg:.*]]: !fir.ref<!fir.logical<8>> {fir.bindc_name = "trim_name"}) { 249*1afd4b7dSDavid Trubysubroutine getenv_name_and_trim_name_only(name, trim_name) 250*1afd4b7dSDavid Truby character(len=32) :: name 251*1afd4b7dSDavid Truby logical :: trim_name 252*1afd4b7dSDavid Truby call getenv(name, TRIM_NAME=trim_name) 253*1afd4b7dSDavid Truby ! CHECK-NOT: fir.call @_FortranAGetEnvVariable 254*1afd4b7dSDavid Truby ! CHECK-NEXT: return 255*1afd4b7dSDavid Trubyend subroutine getenv_name_and_trim_name_only 256*1afd4b7dSDavid Truby 257*1afd4b7dSDavid Truby! CHECK-LABEL: func @_QPgetenv_name_and_errmsg_only( 258*1afd4b7dSDavid Truby! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"}, 259*1afd4b7dSDavid Truby! CHECK-SAME: %[[errmsgArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "errmsg"}) { 260*1afd4b7dSDavid Trubysubroutine getenv_name_and_errmsg_only(name, errmsg) 261*1afd4b7dSDavid Truby character(len=32) :: name, errmsg 262*1afd4b7dSDavid Truby call getenv(name, ERRMSG=errmsg) 263*1afd4b7dSDavid Truby! CHECK: %[[errmsgUnbox:.*]]:2 = fir.unboxchar %[[errmsgArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 264*1afd4b7dSDavid Truby! CHECK-NEXT: %[[errmsgCast:.*]] = fir.convert %[[errmsgUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 265*1afd4b7dSDavid Truby! CHECK-NEXT: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 266*1afd4b7dSDavid Truby! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 267*1afd4b7dSDavid Truby! CHECK-NEXT: %[[nameBox:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 268*1afd4b7dSDavid Truby! CHECK-NEXT: %[[errmsgBox:.*]] = fir.embox %[[errmsgCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 269*1afd4b7dSDavid Truby! CHECK-NEXT: %true = arith.constant true 270*1afd4b7dSDavid Truby! CHECK-NEXT: %[[value:.*]] = fir.absent !fir.box<none> 271*1afd4b7dSDavid Truby! CHECK-NEXT: %[[length:.*]] = fir.absent !fir.box<none> 272*1afd4b7dSDavid Truby! CHECK-NEXT: %[[sourceFileString:.*]] = fir.address_of(@_QQclX{{.*}}) : !fir.ref<!fir.char<1,[[sourceFileLength:.*]]>> 273*1afd4b7dSDavid Truby! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 11]] : i32 274*1afd4b7dSDavid Truby! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 275*1afd4b7dSDavid Truby! CHECK-NEXT: %[[errmsg:.*]] = fir.convert %[[errmsgBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 276*1afd4b7dSDavid Truby! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[sourceFileLength]]>>) -> !fir.ref<i8> 277*1afd4b7dSDavid Truby! CHECK-NEXT: %{{[0-9]+}} = fir.call @_FortranAGetEnvVariable(%[[name]], %[[value]], %[[length]], %true, %[[errmsg]], %[[sourceFile]], %[[sourceLine]]) {{.*}}: (!fir.box<none>, !fir.box<none>, !fir.box<none>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32 278*1afd4b7dSDavid Truby! CHECK-NEXT: return 279*1afd4b7dSDavid Trubyend subroutine getenv_name_and_errmsg_only 280*1afd4b7dSDavid Truby 281*1afd4b7dSDavid Truby! CHECK-LABEL: func @_QPgetenv_all_arguments( 282*1afd4b7dSDavid Truby! CHECK-SAME: %[[nameArg:[^:]*]]: !fir.boxchar<1> {fir.bindc_name = "name"}, 283*1afd4b7dSDavid Truby! CHECK-SAME: %[[valueArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "value"}, 284*1afd4b7dSDavid Truby! CHECK-SAME: %[[lengthArg:[^:]*]]: !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> {fir.bindc_name = "length"}, 285*1afd4b7dSDavid Truby! CHECK-SAME: %[[statusArg:.*]]: !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> {fir.bindc_name = "status"}, 286*1afd4b7dSDavid Truby! CHECK-32-SAME: %[[trimNameArg:.*]]: !fir.ref<!fir.logical<4>> {fir.bindc_name = "trim_name"}, 287*1afd4b7dSDavid Truby! CHECK-64-SAME: %[[trimNameArg:.*]]: !fir.ref<!fir.logical<8>> {fir.bindc_name = "trim_name"}, 288*1afd4b7dSDavid Truby! CHECK-SAME: %[[errmsgArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "errmsg"}) { 289*1afd4b7dSDavid Trubysubroutine getenv_all_arguments(name, value, length, status, trim_name, errmsg) 290*1afd4b7dSDavid Truby character(len=32) :: name, value, errmsg 291*1afd4b7dSDavid Truby integer :: length, status 292*1afd4b7dSDavid Truby logical :: trim_name 293*1afd4b7dSDavid Truby call getenv(name, value, length, status, trim_name, errmsg) 294*1afd4b7dSDavid Truby! CHECK: %[[errmsgUnbox:.*]]:2 = fir.unboxchar %[[errmsgArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 295*1afd4b7dSDavid Truby! CHECK-NEXT: %[[errmsgCast:.*]] = fir.convert %[[errmsgUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 296*1afd4b7dSDavid Truby! CHECK-NEXT: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 297*1afd4b7dSDavid Truby! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 298*1afd4b7dSDavid Truby! CHECK-NEXT: %[[valueUnbox:.*]]:2 = fir.unboxchar %[[valueArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index) 299*1afd4b7dSDavid Truby! CHECK-NEXT: %[[valueCast:.*]] = fir.convert %[[valueUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>> 300*1afd4b7dSDavid Truby! CHECK-NEXT: %[[nameBoxed:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 301*1afd4b7dSDavid Truby! CHECK-NEXT: %[[valueBoxed:.*]] = fir.embox %[[valueCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 302*1afd4b7dSDavid Truby! CHECK-NEXT: %[[lengthBoxed:.*]] = fir.embox %[[lengthArg]] : (!fir.ref<i[[DEFAULT_INTEGER_SIZE]]>) -> !fir.box<i[[DEFAULT_INTEGER_SIZE]]> 303*1afd4b7dSDavid Truby! CHECK-NEXT: %[[errmsgBoxed:.*]] = fir.embox %[[errmsgCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>> 304*1afd4b7dSDavid Truby! CHECK: %[[trimName:.*]] = fir.if %{{.*}} -> (i1) { 305*1afd4b7dSDavid Truby! CHECK-32-NEXT: %[[trimNameLoaded:.*]] = fir.load %[[trimNameArg]] : !fir.ref<!fir.logical<4>> 306*1afd4b7dSDavid Truby! CHECK-64-NEXT: %[[trimNameLoaded:.*]] = fir.load %[[trimNameArg]] : !fir.ref<!fir.logical<8>> 307*1afd4b7dSDavid Truby! CHECK-32-NEXT: %[[trimCast:.*]] = fir.convert %[[trimNameLoaded]] : (!fir.logical<4>) -> i1 308*1afd4b7dSDavid Truby! CHECK-64-NEXT: %[[trimCast:.*]] = fir.convert %[[trimNameLoaded]] : (!fir.logical<8>) -> i1 309*1afd4b7dSDavid Truby! CHECK-NEXT: fir.result %[[trimCast]] : i1 310*1afd4b7dSDavid Truby! CHECK-NEXT: } else { 311*1afd4b7dSDavid Truby! CHECK-NEXT: %[[trueVal:.*]] = arith.constant true 312*1afd4b7dSDavid Truby! CHECK-NEXT: fir.result %[[trueVal]] : i1 313*1afd4b7dSDavid Truby! CHECK-NEXT: } 314*1afd4b7dSDavid Truby! CHECK: %[[sourceFileString:.*]] = fir.address_of(@_QQclX[[fileString:.*]]) : !fir.ref<!fir.char<1,[[fileStringLength:.*]]>> 315*1afd4b7dSDavid Truby! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 22]] : i32 316*1afd4b7dSDavid Truby! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBoxed]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 317*1afd4b7dSDavid Truby! CHECK-NEXT: %[[value:.*]] = fir.convert %[[valueBoxed]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 318*1afd4b7dSDavid Truby! CHECK-NEXT: %[[length:.*]] = fir.convert %[[lengthBoxed]] : (!fir.box<i[[DEFAULT_INTEGER_SIZE]]>) -> !fir.box<none> 319*1afd4b7dSDavid Truby! CHECK-NEXT: %[[errmsg:.*]] = fir.convert %[[errmsgBoxed]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none> 320*1afd4b7dSDavid Truby! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[fileStringLength]]>>) -> !fir.ref<i8> 321*1afd4b7dSDavid Truby! CHECK-32-NEXT: %[[status:.*]] = fir.call @_FortranAGetEnvVariable(%[[name]], %[[value]], %[[length]], %[[trimName]], %[[errmsg]], %[[sourceFile]], %[[sourceLine]]) {{.*}}: (!fir.box<none>, !fir.box<none>, !fir.box<none>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32 322*1afd4b7dSDavid Truby! CHECK-64-NEXT: %[[status32:.*]] = fir.call @_FortranAGetEnvVariable(%[[name]], %[[value]], %[[length]], %[[trimName]], %[[errmsg]], %[[sourceFile]], %[[sourceLine]]) {{.*}}: (!fir.box<none>, !fir.box<none>, !fir.box<none>, i1, !fir.box<none>, !fir.ref<i8>, i32) -> i32 323*1afd4b7dSDavid Truby! CHECK-64: %[[status:.*]] = fir.convert %[[status32]] : (i32) -> i64 324*1afd4b7dSDavid Truby! CHECK: fir.store %[[status]] to %[[statusArg]] : !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> 325*1afd4b7dSDavid Trubyend subroutine getenv_all_arguments 326