diff options
Diffstat (limited to 'lib/Analysis/GRExprEngine.cpp')
-rw-r--r-- | lib/Analysis/GRExprEngine.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/Analysis/GRExprEngine.cpp b/lib/Analysis/GRExprEngine.cpp index d122dca019..98fa58f5dd 100644 --- a/lib/Analysis/GRExprEngine.cpp +++ b/lib/Analysis/GRExprEngine.cpp @@ -1780,6 +1780,23 @@ void GRExprEngine::VisitUnaryOperator(UnaryOperator* U, NodeTy* Pred, return; } + + case UnaryOperator::AlignOf: { + + QualType T = U->getSubExpr()->getType(); + + // FIXME: Add support for VLAs. + + if (!T.getTypePtr()->isConstantSizeType()) + return; + + uint64_t size = getContext().getTypeAlign(T) / 8; + const GRState* St = GetState(Pred); + St = SetSVal(St, U, NonLoc::MakeVal(getBasicVals(), size, U->getType())); + + MakeNode(Dst, U, Pred, St); + return; + } case UnaryOperator::SizeOf: { |