aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/MemoryLocation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Analysis/MemoryLocation.cpp')
-rw-r--r--llvm/lib/Analysis/MemoryLocation.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/MemoryLocation.cpp b/llvm/lib/Analysis/MemoryLocation.cpp
index 44136a7..3d068c4 100644
--- a/llvm/lib/Analysis/MemoryLocation.cpp
+++ b/llvm/lib/Analysis/MemoryLocation.cpp
@@ -177,6 +177,9 @@ MemoryLocation MemoryLocation::getForArgument(const CallBase *Call,
case Intrinsic::memcpy:
case Intrinsic::memcpy_inline:
case Intrinsic::memmove:
+ case Intrinsic::memcpy_element_unordered_atomic:
+ case Intrinsic::memmove_element_unordered_atomic:
+ case Intrinsic::memset_element_unordered_atomic:
assert((ArgIdx == 0 || ArgIdx == 1) &&
"Invalid argument index for memory intrinsic");
if (ConstantInt *LenCI = dyn_cast<ConstantInt>(II->getArgOperand(2)))
@@ -236,6 +239,10 @@ MemoryLocation MemoryLocation::getForArgument(const CallBase *Call,
II->getArgOperand(1)->getType())),
AATags);
}
+
+ assert(
+ !isa<AnyMemTransferInst>(II) &&
+ "all memory transfer intrinsics should be handled by the switch above");
}
// We can bound the aliasing properties of memset_pattern16 just as we can