diff options
| author | Ted Kremenek <kremenek@apple.com> | 2009-02-10 05:42:58 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2009-02-10 05:42:58 +0000 |
| commit | a84522088fb36b1a22cf794dd9081a715a2e0f0e (patch) | |
| tree | 99502113ac3252bdd06cd07edd095bfbb06d2ee5 /clang/lib/Analysis | |
| parent | c3f7b826283bebb4c0a6c2a71117a71f3dbb5e00 (diff) | |
| download | bcm5719-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.cpp | 5 |
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); |

