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;