diff options
author | Ted Kremenek <kremenek@apple.com> | 2010-07-17 01:28:55 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2010-07-17 01:28:55 +0000 |
commit | b32964d02da9f90da59ed126bad6d9401c0b400a (patch) | |
tree | a63fb19c0143a757eb009692874317974eeb2bf3 | |
parent | adc81f8ee8c41be9a104387139dc0e6660a097d1 (diff) | |
download | bcm5719-llvm-b32964d02da9f90da59ed126bad6d9401c0b400a.tar.gz bcm5719-llvm-b32964d02da9f90da59ed126bad6d9401c0b400a.zip |
Fix '<rdar://problem/8202272> __imag passed non-complex should not crash' by removing a bogus assertion.
llvm-svn: 108602
-rw-r--r-- | clang/lib/Checker/GRExprEngine.cpp | 3 | ||||
-rw-r--r-- | clang/test/Analysis/misc-ps.m | 6 |
2 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/Checker/GRExprEngine.cpp b/clang/lib/Checker/GRExprEngine.cpp index 1424820f3b8..26b5801068f 100644 --- a/clang/lib/Checker/GRExprEngine.cpp +++ b/clang/lib/Checker/GRExprEngine.cpp @@ -2835,8 +2835,7 @@ void GRExprEngine::VisitUnaryOperator(UnaryOperator* U, ExplodedNode* Pred, continue; } - // For all other types, UnaryOperator::Float returns 0. - assert (Ex->getType()->isIntegerType()); + // For all other types, UnaryOperator::Imag returns 0. const GRState* state = GetState(*I); SVal X = ValMgr.makeZeroVal(Ex->getType()); MakeNode(Dst, U, *I, state->BindExpr(U, X)); diff --git a/clang/test/Analysis/misc-ps.m b/clang/test/Analysis/misc-ps.m index 7de1305049b..c2099b04a95 100644 --- a/clang/test/Analysis/misc-ps.m +++ b/clang/test/Analysis/misc-ps.m @@ -1020,3 +1020,9 @@ void pr7475_warn() { *someStatic = 0; // expected-warning{{null pointer}} } +// <rdar://problem/8202272> - __imag passed non-complex should not crash +float f0(_Complex float x) { + float l0 = __real x; + return __real l0 + __imag l0; +} + |