[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