diff --git a/clang/lib/CIR/Dialect/Transforms/CallConvLowering.cpp b/clang/lib/CIR/Dialect/Transforms/CallConvLowering.cpp index 34a88c73a69a..db031ae06b55 100644 --- a/clang/lib/CIR/Dialect/Transforms/CallConvLowering.cpp +++ b/clang/lib/CIR/Dialect/Transforms/CallConvLowering.cpp @@ -36,7 +36,8 @@ struct CallConvLoweringPattern : public OpRewritePattern { return op.emitError("function has no AST information"); auto modOp = op->getParentOfType(); - LowerModule lowerModule = createLowerModule(modOp, rewriter); + std::unique_ptr lowerModule = + createLowerModule(modOp, rewriter); // Rewrite function calls before definitions. This should be done before // lowering the definition. @@ -44,14 +45,14 @@ struct CallConvLoweringPattern : public OpRewritePattern { if (calls.has_value()) { for (auto call : calls.value()) { auto callOp = cast(call.getUser()); - if (lowerModule.rewriteFunctionCall(callOp, op).failed()) + if (lowerModule->rewriteFunctionCall(callOp, op).failed()) return failure(); } } // TODO(cir): Instead of re-emmiting every load and store, bitcast arguments // and return values to their ABI-specific counterparts when possible. - if (lowerModule.rewriteFunctionDefinition(op).failed()) + if (lowerModule->rewriteFunctionDefinition(op).failed()) return failure(); return success(); diff --git a/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerModule.cpp b/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerModule.cpp index e0e53edfc1e2..2d82fa58a24f 100644 --- a/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerModule.cpp +++ b/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerModule.cpp @@ -217,7 +217,8 @@ LogicalResult LowerModule::rewriteFunctionCall(CallOp callOp, FuncOp funcOp) { } // TODO: not to create it every time -LowerModule createLowerModule(ModuleOp module, PatternRewriter &rewriter) { +std::unique_ptr createLowerModule(ModuleOp module, + PatternRewriter &rewriter) { // Fetch the LLVM data layout string. auto dataLayoutStr = cast( module->getAttr(LLVM::LLVMDialect::getDataLayoutAttrName())); @@ -237,7 +238,8 @@ LowerModule createLowerModule(ModuleOp module, PatternRewriter &rewriter) { auto context = CIRLowerContext(module, langOpts); context.initBuiltinTypes(*targetInfo); - return LowerModule(context, module, dataLayoutStr, *targetInfo, rewriter); + return std::make_unique(context, module, dataLayoutStr, + *targetInfo, rewriter); } } // namespace cir diff --git a/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerModule.h b/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerModule.h index 35870c716c88..f088086d70c6 100644 --- a/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerModule.h +++ b/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerModule.h @@ -91,7 +91,8 @@ class LowerModule { LogicalResult rewriteFunctionCall(CallOp callOp, FuncOp funcOp); }; -LowerModule createLowerModule(ModuleOp module, PatternRewriter &rewriter); +std::unique_ptr createLowerModule(ModuleOp module, + PatternRewriter &rewriter); } // namespace cir } // namespace mlir