aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-02-21 18:15:29 +0000
committerTed Kremenek <kremenek@apple.com>2008-02-21 18:15:29 +0000
commit297d0d701dd3baa501930c46dfd7ff9db1295614 (patch)
tree513a5b24fd099cbf4393f7bfb01d881b3641266b
parentcca196b553bf3261d8db635a40ca4a78c32b2569 (diff)
Added transfer function support for sizeof(void)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47443 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--Analysis/GRExprEngine.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/Analysis/GRExprEngine.cpp b/Analysis/GRExprEngine.cpp
index fb6dc80e0d..1ca37615d8 100644
--- a/Analysis/GRExprEngine.cpp
+++ b/Analysis/GRExprEngine.cpp
@@ -528,18 +528,22 @@ void GRExprEngine::VisitSizeOfAlignOfTypeExpr(SizeOfAlignOfTypeExpr* Ex,
QualType T = Ex->getArgumentType();
// FIXME: Implement alignof
- // FIXME: Add support for sizeof(void)
- // FIXME: Add support for VLAs.
+ // FIXME: Add support for VLAs.
if (!T.getTypePtr()->isConstantSizeType())
return;
- SourceLocation Loc = Ex->getExprLoc();
- uint64_t size = getContext().getTypeSize(T, Loc) / 8;
+
+ uint64_t size = 1; // Handle sizeof(void)
+
+ if (T != getContext().VoidTy) {
+ SourceLocation Loc = Ex->getExprLoc();
+ size = getContext().getTypeSize(T, Loc) / 8;
+ }
Nodify(Dst, Ex, Pred,
SetRVal(Pred->getState(), Ex,
- NonLVal::MakeVal(ValMgr, size, Ex->getType(), Loc)));
+ NonLVal::MakeVal(ValMgr, size, Ex->getType())));
}