Skip to content

Commit 5f79991

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

File tree

2 files changed

+61
-24
lines changed

2 files changed

+61
-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: 54 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3937,30 +3937,31 @@ 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);
3941+
// pattern.insert<
3942+
// AbsentOpConversion, AddcOpConversion, AddrOfOpConversion,
3943+
// AllocaOpConversion, AllocMemOpConversion, BoxAddrOpConversion,
3944+
// BoxCharLenOpConversion, BoxDimsOpConversion, BoxEleSizeOpConversion,
3945+
// BoxIsAllocOpConversion, BoxIsArrayOpConversion, BoxIsPtrOpConversion,
3946+
// BoxOffsetOpConversion, BoxProcHostOpConversion, BoxRankOpConversion,
3947+
// BoxTypeCodeOpConversion, BoxTypeDescOpConversion, CallOpConversion,
3948+
// CmpcOpConversion, ConstcOpConversion, ConvertOpConversion,
3949+
// CoordinateOpConversion, DTEntryOpConversion, DivcOpConversion,
3950+
// EmboxOpConversion, EmboxCharOpConversion, EmboxProcOpConversion,
3951+
// ExtractValueOpConversion, FieldIndexOpConversion, FirEndOpConversion,
3952+
// FreeMemOpConversion, GlobalLenOpConversion, GlobalOpConversion,
3953+
// HasValueOpConversion, InsertOnRangeOpConversion,
3954+
// InsertValueOpConversion, IsPresentOpConversion,
3955+
// LenParamIndexOpConversion, LoadOpConversion, MulcOpConversion,
3956+
// NegcOpConversion, NoReassocOpConversion, SelectCaseOpConversion,
3957+
// SelectOpConversion, SelectRankOpConversion, SelectTypeOpConversion,
3958+
// ShapeOpConversion, ShapeShiftOpConversion, ShiftOpConversion,
3959+
// SliceOpConversion, StoreOpConversion, StringLitOpConversion,
3960+
// SubcOpConversion, TypeDescOpConversion, TypeInfoOpConversion,
3961+
// UnboxCharOpConversion, UnboxProcOpConversion, UndefOpConversion,
3962+
// UnreachableOpConversion, UnrealizedConversionCastOpConversion,
3963+
// XArrayCoorOpConversion, XEmboxOpConversion, XReboxOpConversion,
3964+
// ZeroOpConversion>(typeConverter, options);
39643965
mlir::populateFuncToLLVMConversionPatterns(typeConverter, pattern);
39653966
mlir::populateOpenMPToLLVMConversionPatterns(typeConverter, pattern);
39663967
mlir::arith::populateArithToLLVMConversionPatterns(typeConverter, pattern);
@@ -4072,3 +4073,32 @@ fir::createLLVMDialectToLLVMPass(llvm::raw_ostream &output,
40724073
fir::LLVMIRLoweringPrinter printer) {
40734074
return std::make_unique<LLVMIRLoweringPass>(output, printer);
40744075
}
4076+
4077+
void fir::populateFIRToLLVMConversionPatterns(
4078+
fir::LLVMTypeConverter &converter, mlir::RewritePatternSet &patterns,
4079+
fir::FIRToLLVMPassOptions &options) {
4080+
patterns.insert<
4081+
AbsentOpConversion, AddcOpConversion, AddrOfOpConversion,
4082+
AllocaOpConversion, AllocMemOpConversion, BoxAddrOpConversion,
4083+
BoxCharLenOpConversion, BoxDimsOpConversion, BoxEleSizeOpConversion,
4084+
BoxIsAllocOpConversion, BoxIsArrayOpConversion, BoxIsPtrOpConversion,
4085+
BoxOffsetOpConversion, BoxProcHostOpConversion, BoxRankOpConversion,
4086+
BoxTypeCodeOpConversion, BoxTypeDescOpConversion, CallOpConversion,
4087+
CmpcOpConversion, ConstcOpConversion, ConvertOpConversion,
4088+
CoordinateOpConversion, DTEntryOpConversion, DivcOpConversion,
4089+
EmboxOpConversion, EmboxCharOpConversion, EmboxProcOpConversion,
4090+
ExtractValueOpConversion, FieldIndexOpConversion, FirEndOpConversion,
4091+
FreeMemOpConversion, GlobalLenOpConversion, GlobalOpConversion,
4092+
HasValueOpConversion, InsertOnRangeOpConversion, InsertValueOpConversion,
4093+
IsPresentOpConversion, LenParamIndexOpConversion, LoadOpConversion,
4094+
MulcOpConversion, NegcOpConversion, NoReassocOpConversion,
4095+
SelectCaseOpConversion, SelectOpConversion, SelectRankOpConversion,
4096+
SelectTypeOpConversion, ShapeOpConversion, ShapeShiftOpConversion,
4097+
ShiftOpConversion, SliceOpConversion, StoreOpConversion,
4098+
StringLitOpConversion, SubcOpConversion, TypeDescOpConversion,
4099+
TypeInfoOpConversion, UnboxCharOpConversion, UnboxProcOpConversion,
4100+
UndefOpConversion, UnreachableOpConversion,
4101+
UnrealizedConversionCastOpConversion, XArrayCoorOpConversion,
4102+
XEmboxOpConversion, XReboxOpConversion, ZeroOpConversion>(converter,
4103+
options);
4104+
}

0 commit comments

Comments
 (0)