[Mlir-commits] [mlir] [MLIR] Fix import of invokes with mismatched variadic types (PR #124828)
Tobias Gysi
llvmlistbot at llvm.org
Tue Jan 28 23:48:23 PST 2025
================
@@ -316,24 +316,31 @@ class ModuleImport {
LogicalResult convertBranchArgs(llvm::Instruction *branch,
llvm::BasicBlock *target,
SmallVectorImpl<Value> &blockArguments);
- /// Appends the converted result type and operands of `callInst` to the
- /// `types` and `operands` arrays. For indirect calls, the method additionally
- /// inserts the called function at the beginning of the `operands` array.
- /// If `allowInlineAsm` is set to false (the default), it will return failure
- /// if the called operand is an inline asm which isn't convertible to MLIR as
- /// a value.
- LogicalResult convertCallTypeAndOperands(llvm::CallBase *callInst,
- SmallVectorImpl<Type> &types,
- SmallVectorImpl<Value> &operands,
- bool allowInlineAsm = false);
- /// Converts the parameter attributes attached to `func` and adds them to the
- /// `funcOp`.
+ /// Convert `callInst` operands. For indirect calls, the method additionally
+ /// inserts the called function at the beginning of the returned `operands`
+ /// array. If `allowInlineAsm` is set to false (the default), it will return
+ /// failure if the called operand is an inline asm which isn't convertible to
+ /// MLIR as a value.
+ FailureOr<SmallVector<Value>>
+ convertCallOperands(llvm::CallBase *callInst, bool allowInlineAsm = false);
+ /// Converts the callee's function type. For direct calls, it converts the
+ /// actual function type, which may differ from the called operand type in
+ /// variadic functions. For indirect calls, it converts the function type
+ /// associated with the call instruction.
+ LLVMFunctionType convertFunctionType(llvm::CallBase *callInst);
+ /// Returns the callee name, or an empty symbol if the call is not direct.
+ FlatSymbolRefAttr convertCalleeName(llvm::CallBase *callInst);
+ /// Converts the parameter attributes attached to `func` and adds them to
+ /// the `funcOp`.
void convertParameterAttributes(llvm::Function *func, LLVMFuncOp funcOp,
OpBuilder &builder);
/// Converts the AttributeSet of one parameter in LLVM IR to a corresponding
/// DictionaryAttr for the LLVM dialect.
DictionaryAttr convertParameterAttribute(llvm::AttributeSet llvmParamAttrs,
OpBuilder &builder);
+ /// Converts the attributes attached to `inst` and adds them to the `op`.
+ LogicalResult convertCallAttributes(llvm::CallInst *inst, CallOp op);
+ LogicalResult convertInvokeAttributes(llvm::InvokeInst *inst, InvokeOp op);
----------------
gysit wrote:
```suggestion
/// Converts the attributes attached to `inst` and adds them to the `op`.
LogicalResult convertInvokeAttributes(llvm::InvokeInst *inst, InvokeOp op);
```
nit: I would duplicate the comment.
https://github.com/llvm/llvm-project/pull/124828
More information about the Mlir-commits
mailing list