Fix PR3335 by not turning a store to one address space into a store to another.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62351 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp
index 1175374..c02fabd 100644
--- a/lib/Transforms/Scalar/InstructionCombining.cpp
+++ b/lib/Transforms/Scalar/InstructionCombining.cpp
@@ -11169,7 +11169,11 @@
if (!SrcPTy->isInteger() && !isa<PointerType>(SrcPTy))
return 0;
- if (IC.getTargetData().getTypeSizeInBits(SrcPTy) !=
+ // If the pointers point into different address spaces or if they point to
+ // values with different sizes, we can't do the transformation.
+ if (SrcTy->getAddressSpace() !=
+ cast<PointerType>(CI->getType())->getAddressSpace() ||
+ IC.getTargetData().getTypeSizeInBits(SrcPTy) !=
IC.getTargetData().getTypeSizeInBits(DestPTy))
return 0;