aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/MemoryBuiltins.cpp
diff options
context:
space:
mode:
authorTim Northover <t.p.northover@gmail.com>2020-10-14 11:38:01 +0100
committerTim Northover <t.p.northover@gmail.com>2020-10-14 12:16:05 +0100
commit630d2647986aa6d672dce184460d7ca3349eb006 (patch)
tree1c6005f462a5710c68e3984e9944e21af46b590a /llvm/lib/Analysis/MemoryBuiltins.cpp
parentaf5be38a01031ed3d9a9690c4ed881fbe781111f (diff)
downloadllvm-630d2647986aa6d672dce184460d7ca3349eb006.zip
llvm-630d2647986aa6d672dce184460d7ca3349eb006.tar.gz
llvm-630d2647986aa6d672dce184460d7ca3349eb006.tar.bz2
Analysis: only query size of sized objects.
Recently we started looking into sret parameters, though the issue could crop up elsewhere. If the pointee type is opaque, we should not try to compute its size because that leads to an assertion failure.
Diffstat (limited to 'llvm/lib/Analysis/MemoryBuiltins.cpp')
-rw-r--r--llvm/lib/Analysis/MemoryBuiltins.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/MemoryBuiltins.cpp b/llvm/lib/Analysis/MemoryBuiltins.cpp
index 402a2bc..cbb54e8 100644
--- a/llvm/lib/Analysis/MemoryBuiltins.cpp
+++ b/llvm/lib/Analysis/MemoryBuiltins.cpp
@@ -678,7 +678,7 @@ SizeOffsetType ObjectSizeOffsetVisitor::visitAllocaInst(AllocaInst &I) {
SizeOffsetType ObjectSizeOffsetVisitor::visitArgument(Argument &A) {
Type *MemoryTy = A.getPointeeInMemoryValueType();
// No interprocedural analysis is done at the moment.
- if (!MemoryTy) {
+ if (!MemoryTy|| !MemoryTy->isSized()) {
++ObjectVisitorArgument;
return unknown();
}