Author: kremenek Date: Wed Jul 28 20:31:59 2010 New Revision: 109719 URL: http://llvm.org/viewvc/llvm-project?rev=109719&view=rev Log: Teach GRExprEngine::VisitLValue() about FloatingLiteral, ImaginaryLiteral, and CharacterLiteral. Fixes an assertion failure reported in PR 7675.
Modified: cfe/trunk/lib/Checker/GRExprEngine.cpp cfe/trunk/test/Analysis/misc-ps-region-store.cpp Modified: cfe/trunk/lib/Checker/GRExprEngine.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/GRExprEngine.cpp?rev=109719&r1=109718&r2=109719&view=diff ============================================================================== --- cfe/trunk/lib/Checker/GRExprEngine.cpp (original) +++ cfe/trunk/lib/Checker/GRExprEngine.cpp Wed Jul 28 20:31:59 2010 @@ -1058,6 +1058,9 @@ // In C++, binding an rvalue to a reference requires to create an object. case Stmt::CXXBoolLiteralExprClass: case Stmt::IntegerLiteralClass: + case Stmt::CharacterLiteralClass: + case Stmt::FloatingLiteralClass: + case Stmt::ImaginaryLiteralClass: CreateCXXTemporaryObject(Ex, Pred, Dst); return; Modified: cfe/trunk/test/Analysis/misc-ps-region-store.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/misc-ps-region-store.cpp?rev=109719&r1=109718&r2=109719&view=diff ============================================================================== --- cfe/trunk/test/Analysis/misc-ps-region-store.cpp (original) +++ cfe/trunk/test/Analysis/misc-ps-region-store.cpp Wed Jul 28 20:31:59 2010 @@ -132,3 +132,19 @@ return 0; } +// PR 7675 - passing literals by-reference +void pr7675(const double &a); +void pr7675(const int &a); +void pr7675(const char &a); +void pr7675_i(const _Complex double &a); + +void pr7675_test() { + pr7675(10.0); + pr7675(10); + pr7675('c'); + pr7675_i(4.0i); + // Add null deref to ensure we are analyzing the code up to this point. + int *p = 0; + *p = 0xDEADBEEF; // expected-warning{{null pointer}} +} + _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits