diff options
author | Gabor Greif <ggreif@gmail.com> | 2010-09-09 10:51:37 +0000 |
---|---|---|
committer | Gabor Greif <ggreif@gmail.com> | 2010-09-09 10:51:37 +0000 |
commit | 230ddf37af25b6e015af6a2485857ed41566c6af (patch) | |
tree | 6d64ba7d0e92a24697da4050ccc64f5dd3152f0f | |
parent | 269f322110d7ed20f15eb40a85c70e7e3dbbd7ea (diff) | |
download | bcm5719-llvm-230ddf37af25b6e015af6a2485857ed41566c6af.tar.gz bcm5719-llvm-230ddf37af25b6e015af6a2485857ed41566c6af.zip |
do not bind temporaries to non-const references
this fixes all analyser test failures in my gcc34-based
environment
how the cast result could bind to the non-const ref is
somewhat mysterious and remains to be investigated; to
avoid similar miscompilations (by gcc34 only?)
llvm-svn: 113480
-rw-r--r-- | clang/lib/Checker/ArrayBoundChecker.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Checker/CStringChecker.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Checker/ReturnPointerRangeChecker.cpp | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/clang/lib/Checker/ArrayBoundChecker.cpp b/clang/lib/Checker/ArrayBoundChecker.cpp index 98345bd7037..cf2a2fcf62f 100644 --- a/clang/lib/Checker/ArrayBoundChecker.cpp +++ b/clang/lib/Checker/ArrayBoundChecker.cpp @@ -51,7 +51,7 @@ void ArrayBoundChecker::VisitLocation(CheckerContext &C, const Stmt *S, SVal l){ return; // Get the index of the accessed element. - DefinedOrUnknownSVal &Idx = cast<DefinedOrUnknownSVal>(ER->getIndex()); + DefinedOrUnknownSVal Idx = cast<DefinedOrUnknownSVal>(ER->getIndex()); const GRState *state = C.getState(); diff --git a/clang/lib/Checker/CStringChecker.cpp b/clang/lib/Checker/CStringChecker.cpp index 9ea572f90df..d61fdd437d6 100644 --- a/clang/lib/Checker/CStringChecker.cpp +++ b/clang/lib/Checker/CStringChecker.cpp @@ -193,7 +193,7 @@ const GRState *CStringChecker::CheckLocation(CheckerContext &C, DefinedOrUnknownSVal Size = cast<DefinedOrUnknownSVal>(Extent); // Get the index of the accessed element. - DefinedOrUnknownSVal &Idx = cast<DefinedOrUnknownSVal>(ER->getIndex()); + DefinedOrUnknownSVal Idx = cast<DefinedOrUnknownSVal>(ER->getIndex()); const GRState *StInBound = state->AssumeInBound(Idx, Size, true); const GRState *StOutBound = state->AssumeInBound(Idx, Size, false); diff --git a/clang/lib/Checker/ReturnPointerRangeChecker.cpp b/clang/lib/Checker/ReturnPointerRangeChecker.cpp index a9eb5ce1a70..0e7a5cf9d17 100644 --- a/clang/lib/Checker/ReturnPointerRangeChecker.cpp +++ b/clang/lib/Checker/ReturnPointerRangeChecker.cpp @@ -59,7 +59,7 @@ void ReturnPointerRangeChecker::PreVisitReturnStmt(CheckerContext &C, if (!ER) return; - DefinedOrUnknownSVal &Idx = cast<DefinedOrUnknownSVal>(ER->getIndex()); + DefinedOrUnknownSVal Idx = cast<DefinedOrUnknownSVal>(ER->getIndex()); // FIXME: All of this out-of-bounds checking should eventually be refactored // into a common place. |