[flang-commits] [flang] [mlir] [flang][acc] Add PointerLikeType API for MemRef type conversion (PR #203965)
Razvan Lupusoru via flang-commits
flang-commits at lists.llvm.org
Mon Jun 15 12:00:44 PDT 2026
https://github.com/razvanlupusoru updated https://github.com/llvm/llvm-project/pull/203965
>From c8d7c22128f6115cf6977088806e3cad05bc1a4f Mon Sep 17 00:00:00 2001
From: Razvan Lupusoru <rlupusoru at nvidia.com>
Date: Mon, 15 Jun 2026 11:14:12 -0700
Subject: [PATCH 1/4] [flang][acc] Add PointerLikeType API for MemRef type
conversion
This PR adds a PointerLikeType API named `getAsMemRefType` whose
intent is to establish equivalent MemRefType - the first use
case for this will be privatization and shared memory handling
to be done in a dialect-independent way. The Flang implementation
uses FIRToMemRefTypeConverter to do so.
---
.../Support/FIROpenACCTypeInterfaces.h | 3 +
.../Optimizer/OpenACC/Support/CMakeLists.txt | 1 +
.../Support/FIROpenACCTypeInterfaces.cpp | 25 ++++
flang/unittests/Optimizer/CMakeLists.txt | 4 +
...FIROpenACCPointerLikeTypeInterfaceTest.cpp | 123 ++++++++++++++++++
.../Dialect/OpenACC/OpenACCTypeInterfaces.td | 12 ++
mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp | 14 ++
.../OpenACC/OpenACCTypeInterfacesTest.cpp | 43 ++++++
8 files changed, 225 insertions(+)
create mode 100644 flang/unittests/Optimizer/OpenACC/FIROpenACCPointerLikeTypeInterfaceTest.cpp
diff --git a/flang/include/flang/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.h b/flang/include/flang/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.h
index 3798d668ed547..ae47805a1af42 100644
--- a/flang/include/flang/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.h
+++ b/flang/include/flang/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.h
@@ -57,6 +57,9 @@ struct OpenACCPointerLikeModel
mlir::Location loc, mlir::Value value,
mlir::Type resultType) const;
+ mlir::MemRefType getAsMemRefType(mlir::Type pointer,
+ mlir::ModuleOp module) const;
+
bool isDeviceData(mlir::Type pointer, mlir::Value var) const;
};
diff --git a/flang/lib/Optimizer/OpenACC/Support/CMakeLists.txt b/flang/lib/Optimizer/OpenACC/Support/CMakeLists.txt
index 9ff46c70db3cc..3da0c79fdf4c9 100644
--- a/flang/lib/Optimizer/OpenACC/Support/CMakeLists.txt
+++ b/flang/lib/Optimizer/OpenACC/Support/CMakeLists.txt
@@ -24,6 +24,7 @@ add_flang_library(FIROpenACCSupport
FIRDialect
FIRDialectSupport
FIRSupport
+ FIRTransforms
HLFIRDialect
MLIR_DEPS
diff --git a/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp b/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp
index 9a8e7e47e54d0..11dcfdf8f0f4b 100644
--- a/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp
+++ b/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp
@@ -25,6 +25,7 @@
#include "flang/Optimizer/Dialect/Support/KindMapping.h"
#include "flang/Optimizer/OpenACC/Support/FIROpenACCUtils.h"
#include "flang/Optimizer/Support/Utils.h"
+#include "flang/Optimizer/Transforms/FIRToMemRefTypeConverter.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/OpenACC/OpenACC.h"
#include "mlir/IR/BuiltinOps.h"
@@ -1603,6 +1604,30 @@ template bool OpenACCPointerLikeModel<fir::LLVMPointerType>::genStore(
mlir::Value valueToStore,
mlir::TypedValue<mlir::acc::PointerLikeType> destPtr) const;
+template <typename Ty>
+mlir::MemRefType OpenACCPointerLikeModel<Ty>::getAsMemRefType(
+ mlir::Type pointer, mlir::ModuleOp module) const {
+ if (auto memrefTy = mlir::dyn_cast<mlir::MemRefType>(pointer))
+ return memrefTy;
+ fir::FIRToMemRefTypeConverter converter(module);
+ converter.setConvertComplexTypes(true);
+ if (!converter.convertibleMemrefType(pointer))
+ return {};
+ return converter.convertMemrefType(pointer);
+}
+
+template mlir::MemRefType OpenACCPointerLikeModel<fir::ReferenceType>::
+ getAsMemRefType(mlir::Type pointer, mlir::ModuleOp module) const;
+
+template mlir::MemRefType OpenACCPointerLikeModel<fir::PointerType>::
+ getAsMemRefType(mlir::Type pointer, mlir::ModuleOp module) const;
+
+template mlir::MemRefType OpenACCPointerLikeModel<fir::HeapType>::getAsMemRefType(
+ mlir::Type pointer, mlir::ModuleOp module) const;
+
+template mlir::MemRefType OpenACCPointerLikeModel<fir::LLVMPointerType>::
+ getAsMemRefType(mlir::Type pointer, mlir::ModuleOp module) const;
+
template <typename Ty>
mlir::Value OpenACCPointerLikeModel<Ty>::genCast(mlir::Type pointer,
mlir::OpBuilder &builder,
diff --git a/flang/unittests/Optimizer/CMakeLists.txt b/flang/unittests/Optimizer/CMakeLists.txt
index 8c2fb1c4dc850..eb1f4f298015a 100644
--- a/flang/unittests/Optimizer/CMakeLists.txt
+++ b/flang/unittests/Optimizer/CMakeLists.txt
@@ -12,7 +12,9 @@ set(LIBS
FIRCodeGenDialect
FIRDialect
FIRDialectSupport
+ FIROpenACCSupport
FIRSupport
+ FIRTransforms
HLFIRDialect
MIFDialect
)
@@ -36,6 +38,7 @@ add_flang_unittest(FlangOptimizerTests
Builder/Runtime/TransformationalTest.cpp
FIRCallInterfaceTest.cpp
FIRContextTest.cpp
+ OpenACC/FIROpenACCPointerLikeTypeInterfaceTest.cpp
FIRTypesTest.cpp
FortranVariableTest.cpp
InternalNamesTest.cpp
@@ -60,4 +63,5 @@ mlir_target_link_libraries(FlangOptimizerTests
PRIVATE
${dialect_libs}
${extension_libs}
+ MLIROpenACCDialect
)
diff --git a/flang/unittests/Optimizer/OpenACC/FIROpenACCPointerLikeTypeInterfaceTest.cpp b/flang/unittests/Optimizer/OpenACC/FIROpenACCPointerLikeTypeInterfaceTest.cpp
new file mode 100644
index 0000000000000..1da27eababa3a
--- /dev/null
+++ b/flang/unittests/Optimizer/OpenACC/FIROpenACCPointerLikeTypeInterfaceTest.cpp
@@ -0,0 +1,123 @@
+//===- FIROpenACCPointerLikeTypeInterfaceTest.cpp -------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "gtest/gtest.h"
+#include "mlir/Dialect/OpenACC/OpenACC.h"
+#include "mlir/IR/BuiltinOps.h"
+#include "flang/Optimizer/Dialect/FIRType.h"
+#include "flang/Optimizer/Dialect/Support/FIRContext.h"
+#include "flang/Optimizer/Dialect/Support/KindMapping.h"
+#include "flang/Optimizer/Support/InitFIR.h"
+
+using namespace mlir;
+
+namespace {
+
+struct FIROpenACCPointerLikeTypeInterfaceTest : public testing::Test {
+ void SetUp() override {
+ mlir::DialectRegistry registry;
+ fir::support::addFIRExtensions(registry);
+ context.appendDialectRegistry(registry);
+ fir::support::loadDialects(context);
+ kindMap = std::make_unique<fir::KindMapping>(&context);
+ module = ModuleOp::create(UnknownLoc::get(&context));
+ fir::setKindMapping(module, *kindMap);
+ }
+
+ MLIRContext context;
+ std::unique_ptr<fir::KindMapping> kindMap;
+ ModuleOp module;
+};
+
+TEST_F(FIROpenACCPointerLikeTypeInterfaceTest,
+ GetAsMemRefTypeFromFirRefStaticArray) {
+ Type f32 = Float32Type::get(&context);
+ Type seq = fir::SequenceType::get({10}, f32);
+ Type refTy = fir::ReferenceType::get(seq);
+ auto ptrLike = cast<acc::PointerLikeType>(refTy);
+
+ MemRefType memrefTy = ptrLike.getAsMemRefType(module);
+ ASSERT_TRUE(memrefTy);
+ EXPECT_EQ(memrefTy.getRank(), 1);
+ EXPECT_EQ(memrefTy.getDimSize(0), 10);
+ EXPECT_TRUE(isa<Float32Type>(memrefTy.getElementType()));
+}
+
+TEST_F(FIROpenACCPointerLikeTypeInterfaceTest,
+ GetAsMemRefTypeFromFirRefMultiDimArray) {
+ Type i32 = IntegerType::get(&context, 32);
+ Type seq = fir::SequenceType::get({2, 3}, i32);
+ Type refTy = fir::ReferenceType::get(seq);
+ auto ptrLike = cast<acc::PointerLikeType>(refTy);
+
+ MemRefType memrefTy = ptrLike.getAsMemRefType(module);
+ ASSERT_TRUE(memrefTy);
+ EXPECT_EQ(memrefTy.getRank(), 2);
+ // MemRef layout is in reversed order:
+ EXPECT_EQ(memrefTy.getDimSize(0), 3);
+ EXPECT_EQ(memrefTy.getDimSize(1), 2);
+ EXPECT_TRUE(isa<IntegerType>(memrefTy.getElementType()));
+ EXPECT_EQ(cast<IntegerType>(memrefTy.getElementType()).getWidth(), 32u);
+}
+
+TEST_F(FIROpenACCPointerLikeTypeInterfaceTest,
+ GetAsMemRefTypeFromFirHeapDynamicArray) {
+ Type f64 = Float64Type::get(&context);
+ Type seq = fir::SequenceType::get({ShapedType::kDynamic}, f64);
+ Type heapTy = fir::HeapType::get(seq);
+ auto ptrLike = cast<acc::PointerLikeType>(heapTy);
+
+ MemRefType memrefTy = ptrLike.getAsMemRefType(module);
+ ASSERT_TRUE(memrefTy);
+ EXPECT_EQ(memrefTy.getRank(), 1);
+ EXPECT_EQ(memrefTy.getDimSize(0), ShapedType::kDynamic);
+ EXPECT_TRUE(isa<Float64Type>(memrefTy.getElementType()));
+}
+
+TEST_F(FIROpenACCPointerLikeTypeInterfaceTest,
+ GetAsMemRefTypeFromFirPointerStaticArray) {
+ Type f32 = Float32Type::get(&context);
+ Type seq = fir::SequenceType::get({4}, f32);
+ Type ptrTy = fir::PointerType::get(seq);
+ auto ptrLike = cast<acc::PointerLikeType>(ptrTy);
+
+ MemRefType memrefTy = ptrLike.getAsMemRefType(module);
+ ASSERT_TRUE(memrefTy);
+ EXPECT_EQ(memrefTy.getRank(), 1);
+ EXPECT_EQ(memrefTy.getDimSize(0), 4);
+}
+
+TEST_F(FIROpenACCPointerLikeTypeInterfaceTest,
+ GetAsMemRefTypeFromFirRefScalarInteger) {
+ Type i32 = IntegerType::get(&context, 32);
+ Type refTy = fir::ReferenceType::get(i32);
+ auto ptrLike = cast<acc::PointerLikeType>(refTy);
+
+ MemRefType memrefTy = ptrLike.getAsMemRefType(module);
+ ASSERT_TRUE(memrefTy);
+ EXPECT_EQ(memrefTy.getRank(), 0);
+ EXPECT_TRUE(isa<IntegerType>(memrefTy.getElementType()));
+ EXPECT_EQ(cast<IntegerType>(memrefTy.getElementType()).getWidth(), 32u);
+}
+
+TEST_F(FIROpenACCPointerLikeTypeInterfaceTest,
+ GetAsMemRefTypeFromFirRefScalarLogical) {
+ constexpr unsigned logicalKind = 4;
+ Type logicalTy = fir::LogicalType::get(&context, logicalKind);
+ Type refTy = fir::ReferenceType::get(logicalTy);
+ auto ptrLike = cast<acc::PointerLikeType>(refTy);
+
+ MemRefType memrefTy = ptrLike.getAsMemRefType(module);
+ ASSERT_TRUE(memrefTy);
+ EXPECT_EQ(memrefTy.getRank(), 0);
+ auto elTy = dyn_cast<IntegerType>(memrefTy.getElementType());
+ ASSERT_TRUE(elTy);
+ EXPECT_EQ(elTy.getWidth(), kindMap->getLogicalBitsize(logicalKind));
+}
+
+} // namespace
diff --git a/mlir/include/mlir/Dialect/OpenACC/OpenACCTypeInterfaces.td b/mlir/include/mlir/Dialect/OpenACC/OpenACCTypeInterfaces.td
index 2753056bf8a7a..37af4a4744839 100644
--- a/mlir/include/mlir/Dialect/OpenACC/OpenACCTypeInterfaces.td
+++ b/mlir/include/mlir/Dialect/OpenACC/OpenACCTypeInterfaces.td
@@ -248,6 +248,18 @@ def OpenACC_PointerLikeTypeInterface : TypeInterface<"PointerLikeType"> {
return {};
}]
>,
+ InterfaceMethod<
+ /*description=*/[{
+ Return this type as an equivalent MemRef type when convertible.
+ }],
+ /*retTy=*/"::mlir::MemRefType",
+ /*methodName=*/"getAsMemRefType",
+ /*args=*/(ins "::mlir::ModuleOp":$module),
+ /*methodBody=*/"",
+ /*defaultImplementation=*/[{
+ return {};
+ }]
+ >,
InterfaceMethod<
/*description=*/[{
Returns true if the pointer points to device data.
diff --git a/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp b/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
index 69a83a90d0d95..d793645e49eca 100644
--- a/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
+++ b/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
@@ -283,6 +283,11 @@ struct MemRefPointerLikeModel
Attribute memSpace = memrefTy.getMemorySpace();
return isa_and_nonnull<gpu::AddressSpaceAttr>(memSpace);
}
+
+ MemRefType getAsMemRefType(Type pointer, ModuleOp module) const {
+ (void)module;
+ return dyn_cast<MemRefType>(pointer);
+ }
};
struct LLVMPointerPointerLikeModel
@@ -361,6 +366,15 @@ struct PrivateTypePointerLikeModel
return {};
return UnwrapPrivateOp::create(builder, loc, resultType, value).getResult();
}
+
+ MemRefType getAsMemRefType(Type type, ModuleOp module) const {
+ Type baseTy = cast<PrivateType>(type).getBaseTy();
+ if (auto memrefTy = dyn_cast<MemRefType>(baseTy))
+ return memrefTy;
+ if (auto ptrLikeTy = dyn_cast<PointerLikeType>(baseTy))
+ return ptrLikeTy.getAsMemRefType(module);
+ return {};
+ }
};
struct MemrefAddressOfGlobalModel
diff --git a/mlir/unittests/Dialect/OpenACC/OpenACCTypeInterfacesTest.cpp b/mlir/unittests/Dialect/OpenACC/OpenACCTypeInterfacesTest.cpp
index 9e9b05e969211..7438ee577952c 100644
--- a/mlir/unittests/Dialect/OpenACC/OpenACCTypeInterfacesTest.cpp
+++ b/mlir/unittests/Dialect/OpenACC/OpenACCTypeInterfacesTest.cpp
@@ -277,3 +277,46 @@ TEST_F(OpenACCTypeInterfacesTest, PointerLikeGenCastPrivateTypeToMemref) {
ASSERT_TRUE(unwrap);
EXPECT_EQ(unwrap.getHandle(), handle);
}
+
+//===----------------------------------------------------------------------===//
+// PointerLikeType::getAsMemRefType tests
+//===----------------------------------------------------------------------===//
+
+TEST_F(OpenACCTypeInterfacesTest, PointerLikeGetAsMemRefTypeRankedMemref) {
+ Location loc = UnknownLoc::get(&context);
+ OwningOpRef<ModuleOp> module = ModuleOp::create(loc);
+
+ auto memTy = MemRefType::get({4, 8}, Float32Type::get(&context));
+ auto ptrLike = cast<PointerLikeType>(memTy);
+ EXPECT_EQ(ptrLike.getAsMemRefType(*module), memTy);
+}
+
+TEST_F(OpenACCTypeInterfacesTest, PointerLikeGetAsMemRefTypeUnrankedMemref) {
+ Location loc = UnknownLoc::get(&context);
+ OwningOpRef<ModuleOp> module = ModuleOp::create(loc);
+
+ auto unrankedTy =
+ UnrankedMemRefType::get(Float32Type::get(&context), /*memorySpace=*/0);
+ auto ptrLike = cast<PointerLikeType>(unrankedTy);
+ EXPECT_FALSE(ptrLike.getAsMemRefType(*module));
+}
+
+TEST_F(OpenACCTypeInterfacesTest, PointerLikeGetAsMemRefTypePrivateTypeMemrefBase) {
+ Location loc = UnknownLoc::get(&context);
+ OwningOpRef<ModuleOp> module = ModuleOp::create(loc);
+
+ Type memrefTy = MemRefType::get({10}, IntegerType::get(&context, 64));
+ Type privateTy = PrivateType::get(&context, memrefTy);
+ auto ptrLike = cast<PointerLikeType>(privateTy);
+ EXPECT_EQ(ptrLike.getAsMemRefType(*module), memrefTy);
+}
+
+TEST_F(OpenACCTypeInterfacesTest,
+ PointerLikeGetAsMemRefTypePrivateTypeNonMemrefBase) {
+ Location loc = UnknownLoc::get(&context);
+ OwningOpRef<ModuleOp> module = ModuleOp::create(loc);
+
+ Type privateTy = PrivateType::get(&context, IntegerType::get(&context, 8));
+ auto ptrLike = cast<PointerLikeType>(privateTy);
+ EXPECT_FALSE(ptrLike.getAsMemRefType(*module));
+}
>From 5280437e13d1378afaee5fe948021c5990068970 Mon Sep 17 00:00:00 2001
From: Razvan Lupusoru <rlupusoru at nvidia.com>
Date: Mon, 15 Jun 2026 11:32:44 -0700
Subject: [PATCH 2/4] Fix format
---
.../Support/FIROpenACCTypeInterfaces.cpp | 23 +++++++++++--------
.../OpenACC/OpenACCTypeInterfacesTest.cpp | 3 ++-
2 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp b/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp
index 11dcfdf8f0f4b..da9114200a5f2 100644
--- a/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp
+++ b/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp
@@ -1605,8 +1605,9 @@ template bool OpenACCPointerLikeModel<fir::LLVMPointerType>::genStore(
mlir::TypedValue<mlir::acc::PointerLikeType> destPtr) const;
template <typename Ty>
-mlir::MemRefType OpenACCPointerLikeModel<Ty>::getAsMemRefType(
- mlir::Type pointer, mlir::ModuleOp module) const {
+mlir::MemRefType
+OpenACCPointerLikeModel<Ty>::getAsMemRefType(mlir::Type pointer,
+ mlir::ModuleOp module) const {
if (auto memrefTy = mlir::dyn_cast<mlir::MemRefType>(pointer))
return memrefTy;
fir::FIRToMemRefTypeConverter converter(module);
@@ -1616,17 +1617,21 @@ mlir::MemRefType OpenACCPointerLikeModel<Ty>::getAsMemRefType(
return converter.convertMemrefType(pointer);
}
-template mlir::MemRefType OpenACCPointerLikeModel<fir::ReferenceType>::
- getAsMemRefType(mlir::Type pointer, mlir::ModuleOp module) const;
+template mlir::MemRefType
+OpenACCPointerLikeModel<fir::ReferenceType>::getAsMemRefType(
+ mlir::Type pointer, mlir::ModuleOp module) const;
-template mlir::MemRefType OpenACCPointerLikeModel<fir::PointerType>::
- getAsMemRefType(mlir::Type pointer, mlir::ModuleOp module) const;
+template mlir::MemRefType
+OpenACCPointerLikeModel<fir::PointerType>::getAsMemRefType(
+ mlir::Type pointer, mlir::ModuleOp module) const;
-template mlir::MemRefType OpenACCPointerLikeModel<fir::HeapType>::getAsMemRefType(
+template mlir::MemRefType
+OpenACCPointerLikeModel<fir::HeapType>::getAsMemRefType(
mlir::Type pointer, mlir::ModuleOp module) const;
-template mlir::MemRefType OpenACCPointerLikeModel<fir::LLVMPointerType>::
- getAsMemRefType(mlir::Type pointer, mlir::ModuleOp module) const;
+template mlir::MemRefType
+OpenACCPointerLikeModel<fir::LLVMPointerType>::getAsMemRefType(
+ mlir::Type pointer, mlir::ModuleOp module) const;
template <typename Ty>
mlir::Value OpenACCPointerLikeModel<Ty>::genCast(mlir::Type pointer,
diff --git a/mlir/unittests/Dialect/OpenACC/OpenACCTypeInterfacesTest.cpp b/mlir/unittests/Dialect/OpenACC/OpenACCTypeInterfacesTest.cpp
index 7438ee577952c..2940712204930 100644
--- a/mlir/unittests/Dialect/OpenACC/OpenACCTypeInterfacesTest.cpp
+++ b/mlir/unittests/Dialect/OpenACC/OpenACCTypeInterfacesTest.cpp
@@ -301,7 +301,8 @@ TEST_F(OpenACCTypeInterfacesTest, PointerLikeGetAsMemRefTypeUnrankedMemref) {
EXPECT_FALSE(ptrLike.getAsMemRefType(*module));
}
-TEST_F(OpenACCTypeInterfacesTest, PointerLikeGetAsMemRefTypePrivateTypeMemrefBase) {
+TEST_F(OpenACCTypeInterfacesTest,
+ PointerLikeGetAsMemRefTypePrivateTypeMemrefBase) {
Location loc = UnknownLoc::get(&context);
OwningOpRef<ModuleOp> module = ModuleOp::create(loc);
>From f8f0a06c0a7e2975c3dc3883295dc0c1b3c00ceb Mon Sep 17 00:00:00 2001
From: Razvan Lupusoru <rlupusoru at nvidia.com>
Date: Mon, 15 Jun 2026 11:41:35 -0700
Subject: [PATCH 3/4] Remove not needed dependency
---
flang/lib/Optimizer/OpenACC/Support/CMakeLists.txt | 1 -
1 file changed, 1 deletion(-)
diff --git a/flang/lib/Optimizer/OpenACC/Support/CMakeLists.txt b/flang/lib/Optimizer/OpenACC/Support/CMakeLists.txt
index 3da0c79fdf4c9..9ff46c70db3cc 100644
--- a/flang/lib/Optimizer/OpenACC/Support/CMakeLists.txt
+++ b/flang/lib/Optimizer/OpenACC/Support/CMakeLists.txt
@@ -24,7 +24,6 @@ add_flang_library(FIROpenACCSupport
FIRDialect
FIRDialectSupport
FIRSupport
- FIRTransforms
HLFIRDialect
MLIR_DEPS
>From 2cbe82ab38d18bbf76d1412e7d1c593613e06cbd Mon Sep 17 00:00:00 2001
From: Razvan Lupusoru <rlupusoru at nvidia.com>
Date: Mon, 15 Jun 2026 11:45:30 -0700
Subject: [PATCH 4/4] Change cmakelists file order so that folders are shown
first
---
flang/unittests/Optimizer/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/flang/unittests/Optimizer/CMakeLists.txt b/flang/unittests/Optimizer/CMakeLists.txt
index eb1f4f298015a..3af6f9d2a3724 100644
--- a/flang/unittests/Optimizer/CMakeLists.txt
+++ b/flang/unittests/Optimizer/CMakeLists.txt
@@ -36,9 +36,9 @@ add_flang_unittest(FlangOptimizerTests
Builder/Runtime/ReductionTest.cpp
Builder/Runtime/StopTest.cpp
Builder/Runtime/TransformationalTest.cpp
+ OpenACC/FIROpenACCPointerLikeTypeInterfaceTest.cpp
FIRCallInterfaceTest.cpp
FIRContextTest.cpp
- OpenACC/FIROpenACCPointerLikeTypeInterfaceTest.cpp
FIRTypesTest.cpp
FortranVariableTest.cpp
InternalNamesTest.cpp
More information about the flang-commits
mailing list