diff --git a/flang/include/flang/Runtime/inquiry.h b/flang/include/flang/Runtime/inquiry.h index 7161d1e41c4bb..0a3cd51236fa3 100644 --- a/flang/include/flang/Runtime/inquiry.h +++ b/flang/include/flang/Runtime/inquiry.h @@ -24,7 +24,8 @@ extern "C" { std::int64_t RTDECL(LboundDim)(const Descriptor &array, int dim, const char *sourceFile = nullptr, int line = 0); -void RTDECL(Shape)(void *result, const Descriptor &array, int kind); +void RTDECL(Shape)(void *result, const Descriptor &array, int kind, + const char *sourceFile = nullptr, int line = 0); std::int64_t RTDECL(Size)( const Descriptor &array, const char *sourceFile = nullptr, int line = 0); diff --git a/flang/runtime/inquiry.cpp b/flang/runtime/inquiry.cpp index ea114174de7fd..443e6291e5e23 100644 --- a/flang/runtime/inquiry.cpp +++ b/flang/runtime/inquiry.cpp @@ -85,8 +85,9 @@ std::int64_t RTDEF(SizeDim)( return static_cast(dimension.Extent()); } -void RTDEF(Shape)(void *result, const Descriptor &array, int kind) { - Terminator terminator{__FILE__, __LINE__}; +void RTDEF(Shape)(void *result, const Descriptor &array, int kind, + const char *sourceFile, int line) { + Terminator terminator{sourceFile, line}; INTERNAL_CHECK(array.rank() <= common::maxRank); for (SubscriptValue i{0}; i < array.rank(); ++i) { const Dimension &dimension{array.GetDimension(i)}; diff --git a/flang/unittests/Runtime/Inquiry.cpp b/flang/unittests/Runtime/Inquiry.cpp index 665a930ee4ff9..220ebb765f8c7 100644 --- a/flang/unittests/Runtime/Inquiry.cpp +++ b/flang/unittests/Runtime/Inquiry.cpp @@ -87,7 +87,8 @@ TEST(Inquiry, Shape) { auto int8Result{ MakeArray(std::vector{array->rank()}, std::vector(array->rank(), 0))}; - RTNAME(Shape)(int8Result->raw().base_addr, *array, /*KIND=*/1); + RTNAME(Shape) + (int8Result->raw().base_addr, *array, /*KIND=*/1, __FILE__, __LINE__); EXPECT_EQ(*int8Result->ZeroBasedIndexedElement(0), 2); EXPECT_EQ(*int8Result->ZeroBasedIndexedElement(1), 3); @@ -95,7 +96,8 @@ TEST(Inquiry, Shape) { auto int32Result{ MakeArray(std::vector{array->rank()}, std::vector(array->rank(), 0))}; - RTNAME(Shape)(int32Result->raw().base_addr, *array, /*KIND=*/4); + RTNAME(Shape) + (int32Result->raw().base_addr, *array, /*KIND=*/4, __FILE__, __LINE__); EXPECT_EQ(*int32Result->ZeroBasedIndexedElement(0), 2); EXPECT_EQ(*int32Result->ZeroBasedIndexedElement(1), 3); @@ -103,7 +105,8 @@ TEST(Inquiry, Shape) { auto int64Result{ MakeArray(std::vector{array->rank()}, std::vector(array->rank(), 0))}; - RTNAME(Shape)(int64Result->raw().base_addr, *array, /*KIND=*/8); + RTNAME(Shape) + (int64Result->raw().base_addr, *array, /*KIND=*/8, __FILE__, __LINE__); EXPECT_EQ(*int64Result->ZeroBasedIndexedElement(0), 2); EXPECT_EQ(*int64Result->ZeroBasedIndexedElement(1), 3); }