Skip to content

Commit c35fc94

Browse files
committed
Revert "[flang][runtime] Add ragged array runtime functions"
This reverts commit 6f3b18a. Causes segfaults because the matching lowering part is missing.
1 parent 387a1b9 commit c35fc94

File tree

4 files changed

+15
-47
lines changed

4 files changed

+15
-47
lines changed

flang/include/flang/Runtime/ragged.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,9 @@ namespace Fortran::runtime {
2424
// By default, a header is set to zero, which is its unused state.
2525
// The layout of a ragged buffer header is mirrored in the compiler.
2626
struct RaggedArrayHeader {
27-
bool indirection{false};
28-
std::uint8_t rank;
27+
std::uint64_t flags{0u};
2928
void *bufferPointer{nullptr};
3029
std::int64_t *extentPointer{nullptr};
31-
32-
bool isIndirection() { return indirection; }
33-
std::uint8_t getRank() { return rank; }
3430
};
3531

3632
RaggedArrayHeader *RaggedArrayAllocate(

flang/runtime/ragged.cpp

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,28 @@
1111

1212
namespace Fortran::runtime {
1313

14+
inline bool isIndirection(const RaggedArrayHeader *const header) {
15+
return header->flags & 1;
16+
}
17+
18+
inline std::size_t rank(const RaggedArrayHeader *const header) {
19+
return header->flags >> 1;
20+
}
21+
1422
RaggedArrayHeader *RaggedArrayAllocate(RaggedArrayHeader *header, bool isHeader,
1523
std::int64_t rank, std::int64_t elementSize, std::int64_t *extentVector) {
1624
if (header && rank) {
17-
std::int64_t size{1};
25+
std::int64_t size = 1;
1826
for (std::int64_t counter{0}; counter < rank; ++counter) {
1927
size *= extentVector[counter];
2028
if (size <= 0) {
2129
return nullptr;
2230
}
2331
}
24-
header->indirection = isHeader;
25-
header->rank = rank;
32+
header->flags = (rank << 1) | isHeader;
2633
header->extentPointer = extentVector;
2734
if (isHeader) {
28-
header->bufferPointer = std::malloc(sizeof(RaggedArrayHeader) * size);
35+
header->bufferPointer = new RaggedArrayHeader[size];
2936
} else {
3037
header->bufferPointer =
3138
static_cast<void *>(std::calloc(elementSize, size));
@@ -39,8 +46,8 @@ RaggedArrayHeader *RaggedArrayAllocate(RaggedArrayHeader *header, bool isHeader,
3946
// Deallocate a ragged array from the heap.
4047
void RaggedArrayDeallocate(RaggedArrayHeader *raggedArrayHeader) {
4148
if (raggedArrayHeader) {
42-
if (std::size_t end{raggedArrayHeader->getRank()}) {
43-
if (raggedArrayHeader->isIndirection()) {
49+
if (std::size_t end{rank(raggedArrayHeader)}) {
50+
if (isIndirection(raggedArrayHeader)) {
4451
std::size_t linearExtent{1u};
4552
for (std::size_t counter{0u}; counter < end && linearExtent > 0;
4653
++counter) {
@@ -53,8 +60,7 @@ void RaggedArrayDeallocate(RaggedArrayHeader *raggedArrayHeader) {
5360
}
5461
std::free(raggedArrayHeader->bufferPointer);
5562
std::free(raggedArrayHeader->extentPointer);
56-
raggedArrayHeader->indirection = false;
57-
raggedArrayHeader->rank = 0u;
63+
raggedArrayHeader->flags = 0u;
5864
}
5965
}
6066
}

flang/unittests/Runtime/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ add_flang_unittest(FlangRuntimeTests
1111
Namelist.cpp
1212
Numeric.cpp
1313
NumericalFormatTest.cpp
14-
Ragged.cpp
1514
Random.cpp
1615
Reduction.cpp
1716
RuntimeCrashTest.cpp

flang/unittests/Runtime/Ragged.cpp

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)