44 : module(module), dl(dl) {}
47 assert(pendingParamSlots.empty() &&
48 "finalizeParameterSlots must run before the rewrite context dies");
53 const mlir::abi::FunctionClassification &fc,
54 mlir::OpBuilder &builder)
override;
58 const mlir::abi::FunctionClassification &fc,
59 mlir::OpBuilder &builder)
override;
63 mlir::LogicalResult
rewriteVAArg(mlir::Operation *vaArgOp,
64 const mlir::abi::ArgClassification &ac,
65 mlir::OpBuilder &builder)
override;
73 mlir::OpBuilder &builder);
85 const mlir::abi::FunctionClassification &fc);
98 mlir::ModuleOp module;
99 const mlir::DataLayout &dl;
void rewriteFunctionAddress(cir::GetGlobalOp addrOp, cir::FuncOp funcOp, mlir::OpBuilder &builder)
Retype addrOp, which holds the address of funcOp, to the signature funcOp was rewritten to,...
mlir::LogicalResult rewriteFunctionDefinition(mlir::FunctionOpInterface funcOp, const mlir::abi::FunctionClassification &fc, mlir::OpBuilder &builder) override
void normalizeParameterSlotAlignments(cir::FuncOp funcOp, const mlir::abi::FunctionClassification &fc)
Restate each non-byval indirect parameter's CIRGen slot alignment as the alignment the ABI promises f...
void finalizeParameterSlots()
Replace each non-byval indirect parameter's CIRGen slot with the incoming pointer,...
mlir::StringRef getDialectNamespace() const override
CIRABIRewriteContext(mlir::ModuleOp module, const mlir::DataLayout &dl)
mlir::LogicalResult rewriteVAArg(mlir::Operation *vaArgOp, const mlir::abi::ArgClassification &ac, mlir::OpBuilder &builder) override
Expand a cir.va_arg into the x86-64 SysV register-save-area / overflow-area sequence.
mlir::LogicalResult rewriteCallSite(mlir::Operation *callOp, const mlir::abi::FunctionClassification &fc, mlir::OpBuilder &builder) override