diff --git a/hpvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp b/hpvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp index 02b45860469d49d4b419d0a8329e889d917af19a..e3c21133b3987000311777ac7b9d50d8210c5e0f 100644 --- a/hpvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp +++ b/hpvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp @@ -1400,9 +1400,10 @@ void CGT_NVPTX::codeGen(DFLeafNode* N) { assert(Ptr->getType()->isPointerTy() && "First argument of supported atomics is expected to be a pointer"); PointerType* PtrTy = cast<PointerType>(Ptr->getType()); - - if(PtrTy != Type::getInt32PtrTy(II->getContext(), PtrTy->getAddressSpace())) { - Ptr = CastInst::CreatePointerCast(Ptr, Type::getInt32PtrTy(II->getContext(), PtrTy->getAddressSpace()), "", II); + PointerType* TargetTy = Type::getInt32PtrTy(II->getContext(), PtrTy->getAddressSpace()); + if (PtrTy != TargetTy) { + Ptr = CastInst::CreatePointerCast(Ptr, TargetTy, "", II); + PtrTy = TargetTy; } std::string name;