diff --git a/flang/include/flang/Optimizer/Transforms/CufOpConversion.h b/flang/include/flang/Optimizer/Transforms/CufOpConversion.h new file mode 100644 index 00000000000000..3e13c72cc0e3e4 --- /dev/null +++ b/flang/include/flang/Optimizer/Transforms/CufOpConversion.h @@ -0,0 +1,31 @@ +//===------- Optimizer/Transforms/CufOpConversion.h -------------*- C++ -*-===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +#ifndef FORTRAN_OPTIMIZER_TRANSFORMS_CUFOPCONVERSION_H_ +#define FORTRAN_OPTIMIZER_TRANSFORMS_CUFOPCONVERSION_H_ + +#include "mlir/Pass/Pass.h" +#include "mlir/Pass/PassRegistry.h" + +namespace fir { +class LLVMTypeConverter; +} + +namespace mlir { +class DataLayout; +} + +namespace cuf { + +void populateCUFToFIRConversionPatterns(fir::LLVMTypeConverter &converter, + mlir::DataLayout &dl, + mlir::RewritePatternSet &patterns); + +} // namespace cuf + +#endif // FORTRAN_OPTIMIZER_TRANSFORMS_CUFOPCONVERSION_H_ diff --git a/flang/lib/Optimizer/Transforms/CufOpConversion.cpp b/flang/lib/Optimizer/Transforms/CufOpConversion.cpp index ac796e83b07078..f8ace2dd96a0d8 100644 --- a/flang/lib/Optimizer/Transforms/CufOpConversion.cpp +++ b/flang/lib/Optimizer/Transforms/CufOpConversion.cpp @@ -6,6 +6,7 @@ // //===----------------------------------------------------------------------===// +#include "flang/Optimizer/Transforms/CufOpConversion.h" #include "flang/Common/Fortran.h" #include "flang/Optimizer/Builder/Runtime/RTBuilder.h" #include "flang/Optimizer/CodeGen/TypeConverter.h" @@ -473,9 +474,7 @@ class CufOpConversion : public fir::impl::CufOpConversionBase { !mlir::isa(dstTy); }); target.addLegalDialect(); - patterns.insert(ctx, &*dl, &typeConverter); - patterns.insert(ctx); + cuf::populateCUFToFIRConversionPatterns(typeConverter, *dl, patterns); if (mlir::failed(mlir::applyPartialConversion(getOperation(), target, std::move(patterns)))) { mlir::emitError(mlir::UnknownLoc::get(ctx), @@ -485,3 +484,12 @@ class CufOpConversion : public fir::impl::CufOpConversionBase { } }; } // namespace + +void cuf::populateCUFToFIRConversionPatterns( + fir::LLVMTypeConverter &converter, mlir::DataLayout &dl, + mlir::RewritePatternSet &patterns) { + patterns.insert(patterns.getContext(), &dl, &converter); + patterns.insert( + patterns.getContext()); +}