[Mlir-commits] [mlir] [mlir] Speed up FuncToLLVM using a SymbolTable (PR #68082)
Oleksandr Alex Zinenko
llvmlistbot at llvm.org
Wed Oct 4 02:25:46 PDT 2023
================
@@ -601,19 +603,38 @@ struct CallOpInterfaceLowering : public ConvertOpToLLVMPattern<CallOpType> {
}
};
-struct CallOpLowering : public CallOpInterfaceLowering<func::CallOp> {
- using Super::Super;
+class CallOpLowering : public CallOpInterfaceLowering<func::CallOp> {
+public:
+ CallOpLowering(const LLVMTypeConverter &typeConverter,
+ // Can be nullptr.
+ const SymbolTable *symbolTable, PatternBenefit benefit = 1)
+ : CallOpInterfaceLowering<func::CallOp>(typeConverter, benefit),
+ symbolTable(symbolTable) {}
LogicalResult
matchAndRewrite(func::CallOp callOp, OpAdaptor adaptor,
ConversionPatternRewriter &rewriter) const override {
bool useBarePtrCallConv = false;
- if (Operation *callee = SymbolTable::lookupNearestSymbolFrom(
- callOp, callOp.getCalleeAttr())) {
- useBarePtrCallConv = shouldUseBarePtrCallConv(callee, getTypeConverter());
+ if (getTypeConverter()->getOptions().useBarePtrCallConv) {
+ useBarePtrCallConv = true;
+ } else if (symbolTable != nullptr) {
+ // Fast hashmap lookup.
----------------
ftynse wrote:
```suggestion
// Fast lookup.
```
https://github.com/llvm/llvm-project/pull/68082
More information about the Mlir-commits
mailing list