1414#include " mlir/Dialect/LLVMIR/LLVMDialect.h"
1515#include " mlir/Dialect/LLVMIR/LLVMTypes.h"
1616#include " mlir/IR/MLIRContext.h"
17+ #include " mlir/Interfaces/DataLayoutInterfaces.h"
1718#include " mlir/Transforms/DialectConversion.h"
1819
1920namespace cir {
2021namespace direct {
2122mlir::Value lowerCirAttrAsValue (mlir::Operation *parentOp, mlir::Attribute attr,
2223 mlir::ConversionPatternRewriter &rewriter,
23- const mlir::TypeConverter *converter);
24+ const mlir::TypeConverter *converter,
25+ mlir::DataLayout const &dataLayout);
2426
2527mlir::LLVM::Linkage convertLinkage (cir::GlobalLinkageKind linkage);
2628
@@ -271,7 +273,15 @@ class CIRToLLVMAllocaOpLowering
271273};
272274
273275class CIRToLLVMLoadOpLowering : public mlir ::OpConversionPattern<cir::LoadOp> {
276+ mlir::DataLayout const &dataLayout;
277+
274278public:
279+ CIRToLLVMLoadOpLowering (mlir::TypeConverter const &typeConverter,
280+ mlir::DataLayout const &dataLayout,
281+ mlir::MLIRContext *context)
282+ : OpConversionPattern<cir::LoadOp>(typeConverter, context),
283+ dataLayout (dataLayout) {}
284+
275285 using mlir::OpConversionPattern<cir::LoadOp>::OpConversionPattern;
276286
277287 mlir::LogicalResult
@@ -281,7 +291,15 @@ class CIRToLLVMLoadOpLowering : public mlir::OpConversionPattern<cir::LoadOp> {
281291
282292class CIRToLLVMStoreOpLowering
283293 : public mlir::OpConversionPattern<cir::StoreOp> {
294+ mlir::DataLayout const &dataLayout;
295+
284296public:
297+ CIRToLLVMStoreOpLowering (mlir::TypeConverter const &typeConverter,
298+ mlir::DataLayout const &dataLayout,
299+ mlir::MLIRContext *context)
300+ : OpConversionPattern<cir::StoreOp>(typeConverter, context),
301+ dataLayout (dataLayout) {}
302+
285303 using mlir::OpConversionPattern<cir::StoreOp>::OpConversionPattern;
286304
287305 mlir::LogicalResult
@@ -291,7 +309,14 @@ class CIRToLLVMStoreOpLowering
291309
292310class CIRToLLVMConstantOpLowering
293311 : public mlir::OpConversionPattern<cir::ConstantOp> {
312+ mlir::DataLayout const &dataLayout;
313+
294314public:
315+ CIRToLLVMConstantOpLowering (mlir::TypeConverter const &typeConverter,
316+ mlir::DataLayout const &dataLayout,
317+ mlir::MLIRContext *context)
318+ : OpConversionPattern<cir::ConstantOp>(typeConverter, context),
319+ dataLayout (dataLayout) {}
295320 using mlir::OpConversionPattern<cir::ConstantOp>::OpConversionPattern;
296321
297322 mlir::LogicalResult
@@ -490,7 +515,15 @@ class CIRToLLVMSwitchFlatOpLowering
490515
491516class CIRToLLVMGlobalOpLowering
492517 : public mlir::OpConversionPattern<cir::GlobalOp> {
518+ mlir::DataLayout const &dataLayout;
519+
493520public:
521+ CIRToLLVMGlobalOpLowering (mlir::TypeConverter const &typeConverter,
522+ mlir::DataLayout const &dataLayout,
523+ mlir::MLIRContext *context)
524+ : OpConversionPattern<cir::GlobalOp>(typeConverter, context),
525+ dataLayout (dataLayout) {}
526+
494527 using mlir::OpConversionPattern<cir::GlobalOp>::OpConversionPattern;
495528
496529 mlir::LogicalResult
0 commit comments