Skip to content

Commit e58f830

Browse files
authored
[flang] add source to SHAPE API (#94781)
1 parent 832b91f commit e58f830

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

flang/include/flang/Runtime/inquiry.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ extern "C" {
2424
std::int64_t RTDECL(LboundDim)(const Descriptor &array, int dim,
2525
const char *sourceFile = nullptr, int line = 0);
2626

27-
void RTDECL(Shape)(void *result, const Descriptor &array, int kind);
27+
void RTDECL(Shape)(void *result, const Descriptor &array, int kind,
28+
const char *sourceFile = nullptr, int line = 0);
2829

2930
std::int64_t RTDECL(Size)(
3031
const Descriptor &array, const char *sourceFile = nullptr, int line = 0);

flang/runtime/inquiry.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,9 @@ std::int64_t RTDEF(SizeDim)(
8585
return static_cast<std::int64_t>(dimension.Extent());
8686
}
8787

88-
void RTDEF(Shape)(void *result, const Descriptor &array, int kind) {
89-
Terminator terminator{__FILE__, __LINE__};
88+
void RTDEF(Shape)(void *result, const Descriptor &array, int kind,
89+
const char *sourceFile, int line) {
90+
Terminator terminator{sourceFile, line};
9091
INTERNAL_CHECK(array.rank() <= common::maxRank);
9192
for (SubscriptValue i{0}; i < array.rank(); ++i) {
9293
const Dimension &dimension{array.GetDimension(i)};

flang/unittests/Runtime/Inquiry.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,23 +87,26 @@ TEST(Inquiry, Shape) {
8787
auto int8Result{
8888
MakeArray<TypeCategory::Integer, 1>(std::vector<int>{array->rank()},
8989
std::vector<std::int8_t>(array->rank(), 0))};
90-
RTNAME(Shape)(int8Result->raw().base_addr, *array, /*KIND=*/1);
90+
RTNAME(Shape)
91+
(int8Result->raw().base_addr, *array, /*KIND=*/1, __FILE__, __LINE__);
9192
EXPECT_EQ(*int8Result->ZeroBasedIndexedElement<std::int8_t>(0), 2);
9293
EXPECT_EQ(*int8Result->ZeroBasedIndexedElement<std::int8_t>(1), 3);
9394

9495
// SHAPE(ARRAY, KIND=4)
9596
auto int32Result{
9697
MakeArray<TypeCategory::Integer, 4>(std::vector<int>{array->rank()},
9798
std::vector<std::int32_t>(array->rank(), 0))};
98-
RTNAME(Shape)(int32Result->raw().base_addr, *array, /*KIND=*/4);
99+
RTNAME(Shape)
100+
(int32Result->raw().base_addr, *array, /*KIND=*/4, __FILE__, __LINE__);
99101
EXPECT_EQ(*int32Result->ZeroBasedIndexedElement<std::int32_t>(0), 2);
100102
EXPECT_EQ(*int32Result->ZeroBasedIndexedElement<std::int32_t>(1), 3);
101103

102104
// SHAPE(ARRAY, KIND=8)
103105
auto int64Result{
104106
MakeArray<TypeCategory::Integer, 8>(std::vector<int>{array->rank()},
105107
std::vector<std::int64_t>(array->rank(), 0))};
106-
RTNAME(Shape)(int64Result->raw().base_addr, *array, /*KIND=*/8);
108+
RTNAME(Shape)
109+
(int64Result->raw().base_addr, *array, /*KIND=*/8, __FILE__, __LINE__);
107110
EXPECT_EQ(*int64Result->ZeroBasedIndexedElement<std::int64_t>(0), 2);
108111
EXPECT_EQ(*int64Result->ZeroBasedIndexedElement<std::int64_t>(1), 3);
109112
}

0 commit comments

Comments
 (0)