Skip to content

Commit 71e01d9

Browse files
authored
[flang] Support KNINT and KIDNNT legacy intrinsic functions (#79190)
These specific intrinsic functions are legacy names that map to the standard generic NINT(..., KIND=8).
1 parent ba45ad1 commit 71e01d9

File tree

2 files changed

+23
-13
lines changed

2 files changed

+23
-13
lines changed

flang/lib/Evaluate/intrinsics.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,6 +1113,12 @@ static const SpecificIntrinsicInterface specificIntrinsicFunction[]{
11131113
{{"kiabs", {{"a", TypePattern{IntType, KindCode::exactKind, 8}}},
11141114
TypePattern{IntType, KindCode::exactKind, 8}},
11151115
"abs"},
1116+
{{"kidnnt", {{"a", DoublePrecision}},
1117+
TypePattern{IntType, KindCode::exactKind, 8}},
1118+
"nint"},
1119+
{{"knint", {{"a", DefaultReal}},
1120+
TypePattern{IntType, KindCode::exactKind, 8}},
1121+
"nint"},
11161122
{{"len", {{"string", DefaultChar, Rank::anyOrAssumedRank}}, DefaultInt,
11171123
Rank::scalar, IntrinsicClass::inquiryFunction}},
11181124
{{"lge", {{"string_a", DefaultChar}, {"string_b", DefaultChar}},

flang/test/Evaluate/folding02.f90

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -277,18 +277,22 @@ module m
277277
(1.3223499632715445262221010125358588993549346923828125_8, &
278278
1.7371201007364975854585509296157397329807281494140625_8))
279279

280-
! Extension specific intrinsic variants of ABS
281-
logical, parameter, test_babs1 = kind(babs(-1_1)) == 1
282-
logical, parameter, test_babs2 = babs(-1_1) == 1_1
283-
logical, parameter, test_iiabs1 = kind(iiabs(-1_2)) == 2
284-
logical, parameter, test_iiabs2 = iiabs(-1_2) == 1_2
285-
logical, parameter, test_jiabs1 = kind(jiabs(-1_4)) == 4
286-
logical, parameter, test_jiabs2 = jiabs(-1_4) == 1_4
287-
logical, parameter, test_kiabs1 = kind(kiabs(-1_8)) == 8
288-
logical, parameter, test_kiabs2 = kiabs(-1_8) == 1_8
289-
logical, parameter, test_zabs1 = kind(zabs((3._8,4._8))) == 8
290-
logical, parameter, test_zabs2 = zabs((3._8,4._8)) == 5_8
291-
logical, parameter, test_cdabs1 = kind(cdabs((3._8,4._8))) == kind(1.d0)
292-
logical, parameter, test_cdabs2 = cdabs((3._8,4._8)) == real(5, kind(1.d0))
280+
! Extension specific intrinsic variants
281+
logical, parameter :: test_babs1 = kind(babs(-1_1)) == 1
282+
logical, parameter :: test_babs2 = babs(-1_1) == 1_1
283+
logical, parameter :: test_iiabs1 = kind(iiabs(-1_2)) == 2
284+
logical, parameter :: test_iiabs2 = iiabs(-1_2) == 1_2
285+
logical, parameter :: test_jiabs1 = kind(jiabs(-1_4)) == 4
286+
logical, parameter :: test_jiabs2 = jiabs(-1_4) == 1_4
287+
logical, parameter :: test_kiabs1 = kind(kiabs(-1_8)) == 8
288+
logical, parameter :: test_kiabs2 = kiabs(-1_8) == 1_8
289+
logical, parameter :: test_zabs1 = kind(zabs((3._8,4._8))) == 8
290+
logical, parameter :: test_zabs2 = zabs((3._8,4._8)) == 5_8
291+
logical, parameter :: test_cdabs1 = kind(cdabs((3._8,4._8))) == kind(1.d0)
292+
logical, parameter :: test_cdabs2 = cdabs((3._8,4._8)) == real(5, kind(1.d0))
293+
logical, parameter :: test_kidnnt1 = kind(kidnnt(2.5d0)) == 8
294+
logical, parameter :: test_kidnnt2 = kidnnt(2.5d0) == 3
295+
logical, parameter :: test_knint1 = kind(knint(2.5)) == 8
296+
logical, parameter :: test_knint2 = knint(2.5) == 3
293297

294298
end

0 commit comments

Comments
 (0)