xref: /llvm-project/flang/test/Lower/Intrinsics/get_environment_variable.f90 (revision 1afd4b7d1e6b4931941b1cdb666718c3dcb06e53)
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