Skip to content

Commit be0ab50

Browse files
committed
[flang][NFC] Expose FIR to LLVM patterns
1 parent 1ca65dd commit be0ab50

File tree

2 files changed

+37
-24
lines changed

2 files changed

+37
-24
lines changed

flang/include/flang/Optimizer/CodeGen/CodeGen.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
namespace fir {
2020

21+
class LLVMTypeConverter;
22+
2123
struct NameUniquer;
2224

2325
#define GEN_PASS_DECL_FIRTOLLVMLOWERING
@@ -80,6 +82,11 @@ std::unique_ptr<mlir::Pass> createLLVMDialectToLLVMPass(
8082
std::unique_ptr<mlir::Pass> createBoxedProcedurePass();
8183
std::unique_ptr<mlir::Pass> createBoxedProcedurePass(bool useThunks);
8284

85+
/// Populate the given list with patterns that convert from FIR to LLVM.
86+
void populateFIRToLLVMConversionPatterns(fir::LLVMTypeConverter &converter,
87+
mlir::RewritePatternSet &patterns,
88+
fir::FIRToLLVMPassOptions &options);
89+
8390
// declarative passes
8491
#define GEN_PASS_REGISTRATION
8592
#include "flang/Optimizer/CodeGen/CGPasses.h.inc"

flang/lib/Optimizer/CodeGen/CodeGen.cpp

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3937,30 +3937,7 @@ class FIRToLLVMLowering
39373937
options.applyTBAA || applyTBAA,
39383938
options.forceUnifiedTBAATree, *dl};
39393939
mlir::RewritePatternSet pattern(context);
3940-
pattern.insert<
3941-
AbsentOpConversion, AddcOpConversion, AddrOfOpConversion,
3942-
AllocaOpConversion, AllocMemOpConversion, BoxAddrOpConversion,
3943-
BoxCharLenOpConversion, BoxDimsOpConversion, BoxEleSizeOpConversion,
3944-
BoxIsAllocOpConversion, BoxIsArrayOpConversion, BoxIsPtrOpConversion,
3945-
BoxOffsetOpConversion, BoxProcHostOpConversion, BoxRankOpConversion,
3946-
BoxTypeCodeOpConversion, BoxTypeDescOpConversion, CallOpConversion,
3947-
CmpcOpConversion, ConstcOpConversion, ConvertOpConversion,
3948-
CoordinateOpConversion, DTEntryOpConversion, DivcOpConversion,
3949-
EmboxOpConversion, EmboxCharOpConversion, EmboxProcOpConversion,
3950-
ExtractValueOpConversion, FieldIndexOpConversion, FirEndOpConversion,
3951-
FreeMemOpConversion, GlobalLenOpConversion, GlobalOpConversion,
3952-
HasValueOpConversion, InsertOnRangeOpConversion,
3953-
InsertValueOpConversion, IsPresentOpConversion,
3954-
LenParamIndexOpConversion, LoadOpConversion, MulcOpConversion,
3955-
NegcOpConversion, NoReassocOpConversion, SelectCaseOpConversion,
3956-
SelectOpConversion, SelectRankOpConversion, SelectTypeOpConversion,
3957-
ShapeOpConversion, ShapeShiftOpConversion, ShiftOpConversion,
3958-
SliceOpConversion, StoreOpConversion, StringLitOpConversion,
3959-
SubcOpConversion, TypeDescOpConversion, TypeInfoOpConversion,
3960-
UnboxCharOpConversion, UnboxProcOpConversion, UndefOpConversion,
3961-
UnreachableOpConversion, UnrealizedConversionCastOpConversion,
3962-
XArrayCoorOpConversion, XEmboxOpConversion, XReboxOpConversion,
3963-
ZeroOpConversion>(typeConverter, options);
3940+
fir::populateFIRToLLVMConversionPatterns(typeConverter, pattern, options);
39643941
mlir::populateFuncToLLVMConversionPatterns(typeConverter, pattern);
39653942
mlir::populateOpenMPToLLVMConversionPatterns(typeConverter, pattern);
39663943
mlir::arith::populateArithToLLVMConversionPatterns(typeConverter, pattern);
@@ -4072,3 +4049,32 @@ fir::createLLVMDialectToLLVMPass(llvm::raw_ostream &output,
40724049
fir::LLVMIRLoweringPrinter printer) {
40734050
return std::make_unique<LLVMIRLoweringPass>(output, printer);
40744051
}
4052+
4053+
void fir::populateFIRToLLVMConversionPatterns(
4054+
fir::LLVMTypeConverter &converter, mlir::RewritePatternSet &patterns,
4055+
fir::FIRToLLVMPassOptions &options) {
4056+
patterns.insert<
4057+
AbsentOpConversion, AddcOpConversion, AddrOfOpConversion,
4058+
AllocaOpConversion, AllocMemOpConversion, BoxAddrOpConversion,
4059+
BoxCharLenOpConversion, BoxDimsOpConversion, BoxEleSizeOpConversion,
4060+
BoxIsAllocOpConversion, BoxIsArrayOpConversion, BoxIsPtrOpConversion,
4061+
BoxOffsetOpConversion, BoxProcHostOpConversion, BoxRankOpConversion,
4062+
BoxTypeCodeOpConversion, BoxTypeDescOpConversion, CallOpConversion,
4063+
CmpcOpConversion, ConstcOpConversion, ConvertOpConversion,
4064+
CoordinateOpConversion, DTEntryOpConversion, DivcOpConversion,
4065+
EmboxOpConversion, EmboxCharOpConversion, EmboxProcOpConversion,
4066+
ExtractValueOpConversion, FieldIndexOpConversion, FirEndOpConversion,
4067+
FreeMemOpConversion, GlobalLenOpConversion, GlobalOpConversion,
4068+
HasValueOpConversion, InsertOnRangeOpConversion, InsertValueOpConversion,
4069+
IsPresentOpConversion, LenParamIndexOpConversion, LoadOpConversion,
4070+
MulcOpConversion, NegcOpConversion, NoReassocOpConversion,
4071+
SelectCaseOpConversion, SelectOpConversion, SelectRankOpConversion,
4072+
SelectTypeOpConversion, ShapeOpConversion, ShapeShiftOpConversion,
4073+
ShiftOpConversion, SliceOpConversion, StoreOpConversion,
4074+
StringLitOpConversion, SubcOpConversion, TypeDescOpConversion,
4075+
TypeInfoOpConversion, UnboxCharOpConversion, UnboxProcOpConversion,
4076+
UndefOpConversion, UnreachableOpConversion,
4077+
UnrealizedConversionCastOpConversion, XArrayCoorOpConversion,
4078+
XEmboxOpConversion, XReboxOpConversion, ZeroOpConversion>(converter,
4079+
options);
4080+
}

0 commit comments

Comments
 (0)