summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-02-10 05:42:58 +0000
committerTed Kremenek <kremenek@apple.com>2009-02-10 05:42:58 +0000
commita84522088fb36b1a22cf794dd9081a715a2e0f0e (patch)
tree99502113ac3252bdd06cd07edd095bfbb06d2ee5 /clang/lib/Analysis
parentc3f7b826283bebb4c0a6c2a71117a71f3dbb5e00 (diff)
downloadbcm5719-llvm-a84522088fb36b1a22cf794dd9081a715a2e0f0e.tar.gz
bcm5719-llvm-a84522088fb36b1a22cf794dd9081a715a2e0f0e.zip
Fix a crash in GRSimpleVals::EvalCast due not handling transparent unions.
llvm-svn: 64200
Diffstat (limited to 'clang/lib/Analysis')
-rw-r--r--clang/lib/Analysis/GRSimpleVals.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Analysis/GRSimpleVals.cpp b/clang/lib/Analysis/GRSimpleVals.cpp
index c1f455b2af2..d50876e5b30 100644
--- a/clang/lib/Analysis/GRSimpleVals.cpp
+++ b/clang/lib/Analysis/GRSimpleVals.cpp
@@ -74,6 +74,11 @@ SVal GRSimpleVals::EvalCast(GRExprEngine& Eng, Loc X, QualType T) {
if (Loc::IsLocType(T) || T->isReferenceType())
return X;
+ // FIXME: Handle transparent unions where a value can be "transparently"
+ // lifted into a union type.
+ if (T->isUnionType())
+ return UnknownVal();
+
assert (T->isIntegerType());
BasicValueFactory& BasicVals = Eng.getBasicVals();
unsigned BitWidth = Eng.getContext().getTypeSize(T);
OpenPOWER on IntegriCloud