Skip to content

Commit 1afd4b7

Browse files
authored
[flang] Allow getenv as alternate spelling for get_environment_variable (#95777)
This patch adds getenv as an alternate spelling for get_environment_variable. This spelling is allowed by multiple other compilers and is used in OpenRadioss.
1 parent 87c51e2 commit 1afd4b7

File tree

3 files changed

+170
-4
lines changed

3 files changed

+170
-4
lines changed

flang/docs/Intrinsics.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,7 @@ MALLOC
707707
```
708708
CALL FDATE(TIME)
709709
CALL GETLOG(USRNAME)
710+
CALL GETENV(NAME [, VALUE, LENGTH, STATUS, TRIM_NAME, ERRMSG ])
710711
```
711712

712713
## Intrinsic Procedure Name Resolution
@@ -768,7 +769,7 @@ This phase currently supports all the intrinsic procedures listed above but the
768769
| Intrinsic subroutines |MVBITS (elemental), CPU_TIME, DATE_AND_TIME, EVENT_QUERY, EXECUTE_COMMAND_LINE, GET_COMMAND, GET_COMMAND_ARGUMENT, GET_ENVIRONMENT_VARIABLE, MOVE_ALLOC, RANDOM_INIT, RANDOM_NUMBER, RANDOM_SEED, SIGNAL, SLEEP, SYSTEM, SYSTEM_CLOCK |
769770
| Atomic intrinsic subroutines | ATOMIC_ADD |
770771
| Collective intrinsic subroutines | CO_REDUCE |
771-
| Library subroutines | FDATE, GETLOG |
772+
| Library subroutines | FDATE, GETLOG, GETENV |
772773

773774

774775
### Intrinsic Function Folding
@@ -999,4 +1000,4 @@ PROGRAM example_getcwd
9991000
PRINT *, cwd
10001001
PRINT *, status
10011002
END PROGRAM
1002-
```
1003+
```

flang/lib/Evaluate/intrinsics.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -998,6 +998,7 @@ static const IntrinsicInterface genericIntrinsicFunction[]{
998998
// compatibility and builtins.
999999
static const std::pair<const char *, const char *> genericAlias[]{
10001000
{"and", "iand"},
1001+
{"getenv", "get_environment_variable"},
10011002
{"imag", "aimag"},
10021003
{"lshift", "shiftl"},
10031004
{"or", "ior"},
@@ -2594,7 +2595,8 @@ bool IntrinsicProcTable::Implementation::IsIntrinsicFunction(
25942595
return name == "__builtin_c_loc" || name == "null";
25952596
}
25962597
bool IntrinsicProcTable::Implementation::IsIntrinsicSubroutine(
2597-
const std::string &name) const {
2598+
const std::string &name0) const {
2599+
const std::string &name{ResolveAlias(name0)};
25982600
auto subrRange{subroutines_.equal_range(name)};
25992601
if (subrRange.first != subrRange.second) {
26002602
return true;
@@ -3151,7 +3153,8 @@ std::optional<SpecificCall> IntrinsicProcTable::Implementation::Probe(
31513153
}
31523154

31533155
if (call.isSubroutineCall) {
3154-
auto subrRange{subroutines_.equal_range(call.name)};
3156+
const std::string &name{ResolveAlias(call.name)};
3157+
auto subrRange{subroutines_.equal_range(name)};
31553158
for (auto iter{subrRange.first}; iter != subrRange.second; ++iter) {
31563159
if (auto specificCall{iter->second->Match(
31573160
call, defaults_, arguments, context, builtinsScope_)}) {

flang/test/Lower/Intrinsics/get_environment_variable.f90

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,3 +161,165 @@ subroutine all_arguments(name, value, length, status, trim_name, errmsg)
161161
! CHECK-64: %[[status:.*]] = fir.convert %[[status32]] : (i32) -> i64
162162
! CHECK: fir.store %[[status]] to %[[statusArg]] : !fir.ref<i[[DEFAULT_INTEGER_SIZE]]>
163163
end subroutine all_arguments
164+
165+
166+
! CHECK-LABEL: func @_QPgetenv_name_only(
167+
! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"}) {
168+
subroutine getenv_name_only(name)
169+
character(len=32) :: name
170+
call getenv(name)
171+
! CHECK-NOT: fir.call @_FortranAGetEnvVariable
172+
! CHECK-NEXT: return
173+
end subroutine getenv_name_only
174+
175+
! CHECK-LABEL: func @_QPgetenv_name_and_value_only(
176+
! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"},
177+
! CHECK-SAME: %[[valueArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "value"}) {
178+
subroutine getenv_name_and_value_only(name, value)
179+
character(len=32) :: name, value
180+
call getenv(name, value)
181+
! CHECK: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
182+
! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>>
183+
! CHECK-NEXT: %[[valueUnbox:.*]]:2 = fir.unboxchar %[[valueArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
184+
! CHECK-NEXT: %[[valueCast:.*]] = fir.convert %[[valueUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>>
185+
! CHECK-NEXT: %[[nameBox:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>>
186+
! CHECK-NEXT: %[[valueBox:.*]] = fir.embox %[[valueCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>>
187+
! CHECK-NEXT: %true = arith.constant true
188+
! CHECK-NEXT: %[[length:.*]] = fir.absent !fir.box<none>
189+
! CHECK-NEXT: %[[errmsg:.*]] = fir.absent !fir.box<none>
190+
! CHECK-NEXT: %[[sourceFileString:.*]] = fir.address_of(@_QQcl{{.*}}) : !fir.ref<!fir.char<1,[[sourceFileLength:.*]]>>
191+
! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 11]] : i32
192+
! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none>
193+
! CHECK-NEXT: %[[value:.*]] = fir.convert %[[valueBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none>
194+
! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[sourceFileLength]]>>) -> !fir.ref<i8>
195+
! 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+
! CHECK-NEXT: return
197+
end subroutine getenv_name_and_value_only
198+
199+
! CHECK-LABEL: func @_QPgetenv_name_and_length_only(
200+
! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"},
201+
! CHECK-SAME: %[[lengthArg:.*]]: !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> {fir.bindc_name = "length"}) {
202+
subroutine getenv_name_and_length_only(name, length)
203+
character(len=32) :: name
204+
integer :: length
205+
call getenv(name, LENGTH=length)
206+
! CHECK: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
207+
! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>>
208+
! CHECK-NEXT: %[[nameBox:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>>
209+
! CHECK-NEXT: %[[lengthBox:.*]] = fir.embox %arg1 : (!fir.ref<i[[DEFAULT_INTEGER_SIZE]]>) -> !fir.box<i[[DEFAULT_INTEGER_SIZE]]>
210+
! CHECK-NEXT: %true = arith.constant true
211+
! CHECK-NEXT: %[[value:.*]] = fir.absent !fir.box<none>
212+
! CHECK-NEXT: %[[errmsg:.*]] = fir.absent !fir.box<none>
213+
! CHECK: %[[sourceFileString:.*]] = fir.address_of(@_QQclX{{.*}}) : !fir.ref<!fir.char<1,[[sourceFileLength:.*]]>>
214+
! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 9]] : i32
215+
! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none>
216+
! CHECK-NEXT: %[[length:.*]] = fir.convert %[[lengthBox]] : (!fir.box<i[[DEFAULT_INTEGER_SIZE]]>) -> !fir.box<none>
217+
! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[sourceFileLength]]>>) -> !fir.ref<i8>
218+
! 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+
end subroutine getenv_name_and_length_only
220+
221+
! CHECK-LABEL: func @_QPgetenv_name_and_status_only(
222+
! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"},
223+
! CHECK-SAME: %[[statusArg:.*]]: !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> {fir.bindc_name = "status"}) {
224+
subroutine getenv_name_and_status_only(name, status)
225+
character(len=32) :: name
226+
integer :: status
227+
call getenv(name, STATUS=status)
228+
! CHECK: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
229+
! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>>
230+
! CHECK-NEXT: %[[nameBox:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>>
231+
! CHECK-NEXT: %true = arith.constant true
232+
! CHECK-NEXT: %[[value:.*]] = fir.absent !fir.box<none>
233+
! CHECK-NEXT: %[[length:.*]] = fir.absent !fir.box<none>
234+
! CHECK-NEXT: %[[errmsg:.*]] = fir.absent !fir.box<none>
235+
! CHECK-NEXT: %[[sourceFileString:.*]] = fir.address_of(@_QQclX{{.*}}) : !fir.ref<!fir.char<1,[[sourceFileLength:.*]]>>
236+
! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 9]] : i32
237+
! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none>
238+
! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[sourceFileLength]]>>) -> !fir.ref<i8>
239+
! 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+
! 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+
! CHECK-64: %[[status:.*]] = fir.convert %[[status32]] : (i32) -> i64
242+
! CHECK: fir.store %[[status]] to %[[statusArg]] : !fir.ref<i[[DEFAULT_INTEGER_SIZE]]>
243+
end subroutine getenv_name_and_status_only
244+
245+
! CHECK-LABEL: func @_QPgetenv_name_and_trim_name_only(
246+
! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"},
247+
! CHECK-32-SAME: %[[trimNameArg:.*]]: !fir.ref<!fir.logical<4>> {fir.bindc_name = "trim_name"}) {
248+
! CHECK-64-SAME: %[[trimNameArg:.*]]: !fir.ref<!fir.logical<8>> {fir.bindc_name = "trim_name"}) {
249+
subroutine getenv_name_and_trim_name_only(name, trim_name)
250+
character(len=32) :: name
251+
logical :: trim_name
252+
call getenv(name, TRIM_NAME=trim_name)
253+
! CHECK-NOT: fir.call @_FortranAGetEnvVariable
254+
! CHECK-NEXT: return
255+
end subroutine getenv_name_and_trim_name_only
256+
257+
! CHECK-LABEL: func @_QPgetenv_name_and_errmsg_only(
258+
! CHECK-SAME: %[[nameArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "name"},
259+
! CHECK-SAME: %[[errmsgArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "errmsg"}) {
260+
subroutine getenv_name_and_errmsg_only(name, errmsg)
261+
character(len=32) :: name, errmsg
262+
call getenv(name, ERRMSG=errmsg)
263+
! CHECK: %[[errmsgUnbox:.*]]:2 = fir.unboxchar %[[errmsgArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
264+
! CHECK-NEXT: %[[errmsgCast:.*]] = fir.convert %[[errmsgUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>>
265+
! CHECK-NEXT: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
266+
! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>>
267+
! CHECK-NEXT: %[[nameBox:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>>
268+
! CHECK-NEXT: %[[errmsgBox:.*]] = fir.embox %[[errmsgCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>>
269+
! CHECK-NEXT: %true = arith.constant true
270+
! CHECK-NEXT: %[[value:.*]] = fir.absent !fir.box<none>
271+
! CHECK-NEXT: %[[length:.*]] = fir.absent !fir.box<none>
272+
! CHECK-NEXT: %[[sourceFileString:.*]] = fir.address_of(@_QQclX{{.*}}) : !fir.ref<!fir.char<1,[[sourceFileLength:.*]]>>
273+
! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 11]] : i32
274+
! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none>
275+
! CHECK-NEXT: %[[errmsg:.*]] = fir.convert %[[errmsgBox]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none>
276+
! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[sourceFileLength]]>>) -> !fir.ref<i8>
277+
! 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+
! CHECK-NEXT: return
279+
end subroutine getenv_name_and_errmsg_only
280+
281+
! CHECK-LABEL: func @_QPgetenv_all_arguments(
282+
! CHECK-SAME: %[[nameArg:[^:]*]]: !fir.boxchar<1> {fir.bindc_name = "name"},
283+
! CHECK-SAME: %[[valueArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "value"},
284+
! CHECK-SAME: %[[lengthArg:[^:]*]]: !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> {fir.bindc_name = "length"},
285+
! CHECK-SAME: %[[statusArg:.*]]: !fir.ref<i[[DEFAULT_INTEGER_SIZE]]> {fir.bindc_name = "status"},
286+
! CHECK-32-SAME: %[[trimNameArg:.*]]: !fir.ref<!fir.logical<4>> {fir.bindc_name = "trim_name"},
287+
! CHECK-64-SAME: %[[trimNameArg:.*]]: !fir.ref<!fir.logical<8>> {fir.bindc_name = "trim_name"},
288+
! CHECK-SAME: %[[errmsgArg:.*]]: !fir.boxchar<1> {fir.bindc_name = "errmsg"}) {
289+
subroutine getenv_all_arguments(name, value, length, status, trim_name, errmsg)
290+
character(len=32) :: name, value, errmsg
291+
integer :: length, status
292+
logical :: trim_name
293+
call getenv(name, value, length, status, trim_name, errmsg)
294+
! CHECK: %[[errmsgUnbox:.*]]:2 = fir.unboxchar %[[errmsgArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
295+
! CHECK-NEXT: %[[errmsgCast:.*]] = fir.convert %[[errmsgUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>>
296+
! CHECK-NEXT: %[[nameUnbox:.*]]:2 = fir.unboxchar %[[nameArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
297+
! CHECK-NEXT: %[[nameCast:.*]] = fir.convert %[[nameUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>>
298+
! CHECK-NEXT: %[[valueUnbox:.*]]:2 = fir.unboxchar %[[valueArg]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
299+
! CHECK-NEXT: %[[valueCast:.*]] = fir.convert %[[valueUnbox]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<!fir.char<1,32>>
300+
! CHECK-NEXT: %[[nameBoxed:.*]] = fir.embox %[[nameCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>>
301+
! CHECK-NEXT: %[[valueBoxed:.*]] = fir.embox %[[valueCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>>
302+
! CHECK-NEXT: %[[lengthBoxed:.*]] = fir.embox %[[lengthArg]] : (!fir.ref<i[[DEFAULT_INTEGER_SIZE]]>) -> !fir.box<i[[DEFAULT_INTEGER_SIZE]]>
303+
! CHECK-NEXT: %[[errmsgBoxed:.*]] = fir.embox %[[errmsgCast]] : (!fir.ref<!fir.char<1,32>>) -> !fir.box<!fir.char<1,32>>
304+
! CHECK: %[[trimName:.*]] = fir.if %{{.*}} -> (i1) {
305+
! CHECK-32-NEXT: %[[trimNameLoaded:.*]] = fir.load %[[trimNameArg]] : !fir.ref<!fir.logical<4>>
306+
! CHECK-64-NEXT: %[[trimNameLoaded:.*]] = fir.load %[[trimNameArg]] : !fir.ref<!fir.logical<8>>
307+
! CHECK-32-NEXT: %[[trimCast:.*]] = fir.convert %[[trimNameLoaded]] : (!fir.logical<4>) -> i1
308+
! CHECK-64-NEXT: %[[trimCast:.*]] = fir.convert %[[trimNameLoaded]] : (!fir.logical<8>) -> i1
309+
! CHECK-NEXT: fir.result %[[trimCast]] : i1
310+
! CHECK-NEXT: } else {
311+
! CHECK-NEXT: %[[trueVal:.*]] = arith.constant true
312+
! CHECK-NEXT: fir.result %[[trueVal]] : i1
313+
! CHECK-NEXT: }
314+
! CHECK: %[[sourceFileString:.*]] = fir.address_of(@_QQclX[[fileString:.*]]) : !fir.ref<!fir.char<1,[[fileStringLength:.*]]>>
315+
! CHECK-NEXT: %[[sourceLine:.*]] = arith.constant [[# @LINE - 22]] : i32
316+
! CHECK-NEXT: %[[name:.*]] = fir.convert %[[nameBoxed]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none>
317+
! CHECK-NEXT: %[[value:.*]] = fir.convert %[[valueBoxed]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none>
318+
! CHECK-NEXT: %[[length:.*]] = fir.convert %[[lengthBoxed]] : (!fir.box<i[[DEFAULT_INTEGER_SIZE]]>) -> !fir.box<none>
319+
! CHECK-NEXT: %[[errmsg:.*]] = fir.convert %[[errmsgBoxed]] : (!fir.box<!fir.char<1,32>>) -> !fir.box<none>
320+
! CHECK-NEXT: %[[sourceFile:.*]] = fir.convert %[[sourceFileString]] : (!fir.ref<!fir.char<1,[[fileStringLength]]>>) -> !fir.ref<i8>
321+
! 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+
! 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+
! CHECK-64: %[[status:.*]] = fir.convert %[[status32]] : (i32) -> i64
324+
! CHECK: fir.store %[[status]] to %[[statusArg]] : !fir.ref<i[[DEFAULT_INTEGER_SIZE]]>
325+
end subroutine getenv_all_arguments

0 commit comments

Comments
 (0)