Skip to content

Commit 5661317

Browse files
committed
[flang] Put intrinsic function table back into order
Some intrinsic functions weren't findable because the table wasn't strictly in order of names. And complete a missing generalization of the extension DCONJG to accept any kind of complex argument, like DREAL and DIMAG were. Differential Revision: https://reviews.llvm.org/D110002
1 parent 2276733 commit 5661317

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

flang/lib/Evaluate/intrinsics.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -936,18 +936,16 @@ static const SpecificIntrinsicInterface specificIntrinsicFunction[]{
936936
{"y", AnyIntOrReal, Rank::elementalOrBOZ, Optionality::optional}},
937937
DoublePrecisionComplex},
938938
"cmplx", true},
939-
{{"dfloat", {{"i", AnyInt}}, DoublePrecision}, "real", true},
940-
{{"dreal", {{"a", AnyComplex}}, DoublePrecision}, "real", true},
941-
{{"dconjg", {{"a", DoublePrecisionComplex}}, DoublePrecisionComplex},
942-
"conjg"},
939+
{{"dconjg", {{"a", AnyComplex}}, DoublePrecisionComplex}, "conjg"},
943940
{{"dcos", {{"x", DoublePrecision}}, DoublePrecision}, "cos"},
944941
{{"dcosh", {{"x", DoublePrecision}}, DoublePrecision}, "cosh"},
945942
{{"ddim", {{"x", DoublePrecision}, {"y", DoublePrecision}},
946943
DoublePrecision},
947944
"dim"},
948-
{{"dimag", {{"a", DoublePrecisionComplex}}, DoublePrecision}, "aimag"},
949945
{{"dexp", {{"x", DoublePrecision}}, DoublePrecision}, "exp"},
946+
{{"dfloat", {{"i", AnyInt}}, DoublePrecision}, "real", true},
950947
{{"dim", {{"x", DefaultReal}, {"y", DefaultReal}}, DefaultReal}},
948+
{{"dimag", {{"a", AnyComplex}}, DoublePrecision}, "aimag"},
951949
{{"dint", {{"a", DoublePrecision}}, DoublePrecision}, "aint"},
952950
{{"dlog", {{"x", DoublePrecision}}, DoublePrecision}, "log"},
953951
{{"dlog10", {{"x", DoublePrecision}}, DoublePrecision}, "log10"},
@@ -966,6 +964,7 @@ static const SpecificIntrinsicInterface specificIntrinsicFunction[]{
966964
"mod"},
967965
{{"dnint", {{"a", DoublePrecision}}, DoublePrecision}, "anint"},
968966
{{"dprod", {{"x", DefaultReal}, {"y", DefaultReal}}, DoublePrecision}},
967+
{{"dreal", {{"a", AnyComplex}}, DoublePrecision}, "real", true},
969968
{{"dsign", {{"a", DoublePrecision}, {"b", DoublePrecision}},
970969
DoublePrecision},
971970
"sign"},

flang/unittests/Evaluate/intrinsics.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,9 @@ void TestIntrinsics() {
237237
TestCall{defaults, table, "conjg"}
238238
.Push(Const(Scalar<Complex8>{}))
239239
.DoCall(Complex8::GetType());
240-
TestCall{defaults, table, "dconjg"}.Push(Const(Scalar<Complex4>{})).DoCall();
240+
TestCall{defaults, table, "dconjg"}
241+
.Push(Const(Scalar<Complex4>{}))
242+
.DoCall(Complex8::GetType());
241243
TestCall{defaults, table, "dconjg"}
242244
.Push(Const(Scalar<Complex8>{}))
243245
.DoCall(Complex8::GetType());

0 commit comments

Comments
 (0)