[Mlir-commits] [mlir] ea043ea - [MLIR] Avoid some pointer element type accesses
Nikita Popov
llvmlistbot at llvm.org
Wed Mar 30 01:01:44 PDT 2022
Author: Nikita Popov
Date: 2022-03-30T10:00:51+02:00
New Revision: ea043ea1831d3f40b06535cab259f8f4946735b0
URL: https://github.com/llvm/llvm-project/commit/ea043ea1831d3f40b06535cab259f8f4946735b0
DIFF: https://github.com/llvm/llvm-project/commit/ea043ea1831d3f40b06535cab259f8f4946735b0.diff
LOG: [MLIR] Avoid some pointer element type accesses
Determine the element type from the MLIR LLVMPointerType, rather
than the LLVM PointerType.
Added:
Modified:
mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp
mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
Removed:
################################################################################
diff --git a/mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp b/mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp
index 4d72cdbf13a10..fcea89ce34408 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp
@@ -280,9 +280,10 @@ convertOperationImpl(Operation &opInst, llvm::IRBuilderBase &builder,
if (auto attr = op.getAttrOfType<FlatSymbolRefAttr>("callee"))
return builder.CreateCall(
moduleTranslation.lookupFunction(attr.getValue()), operandsRef);
- auto *calleeType = operandsRef.front()->getType();
- auto *calleeFunctionType =
- cast<llvm::FunctionType>(calleeType->getPointerElementType());
+ auto calleeType =
+ op.getOperands().front().getType().cast<LLVMPointerType>();
+ auto *calleeFunctionType = cast<llvm::FunctionType>(
+ moduleTranslation.convertType(calleeType.getElementType()));
return builder.CreateCall(calleeFunctionType, operandsRef.front(),
operandsRef.drop_front());
};
@@ -367,9 +368,10 @@ convertOperationImpl(Operation &opInst, llvm::IRBuilderBase &builder,
moduleTranslation.lookupBlock(invOp.getSuccessor(0)),
moduleTranslation.lookupBlock(invOp.getSuccessor(1)), operandsRef);
} else {
- auto *calleeType = operandsRef.front()->getType();
- auto *calleeFunctionType =
- cast<llvm::FunctionType>(calleeType->getPointerElementType());
+ auto calleeType =
+ invOp.getCalleeOperands().front().getType().cast<LLVMPointerType>();
+ auto *calleeFunctionType = cast<llvm::FunctionType>(
+ moduleTranslation.convertType(calleeType.getElementType()));
result = builder.CreateInvoke(
calleeFunctionType, operandsRef.front(),
moduleTranslation.lookupBlock(invOp.getSuccessor(0)),
diff --git a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
index 9b4c8cf990d2e..50f1ef65bcd5b 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
@@ -874,11 +874,14 @@ convertOmpWsLoop(Operation &opInst, llvm::IRBuilderBase &builder,
llvm::OpenMPIRBuilder::AtomicReductionGenTy atomicGen = nullptr;
if (owningAtomicReductionGens[i])
atomicGen = owningAtomicReductionGens[i];
+ auto reductionType =
+ loop.reduction_vars()[i].getType().cast<LLVM::LLVMPointerType>();
llvm::Value *variable =
moduleTranslation.lookupValue(loop.reduction_vars()[i]);
- reductionInfos.push_back({variable->getType()->getPointerElementType(),
- variable, privateReductionVariables[i],
- owningReductionGens[i], atomicGen});
+ reductionInfos.push_back(
+ {moduleTranslation.convertType(reductionType.getElementType()),
+ variable, privateReductionVariables[i], owningReductionGens[i],
+ atomicGen});
}
// The call to createReductions below expects the block to have a
More information about the Mlir-commits
mailing list