| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 73996
|
| |
|
|
| |
llvm-svn: 73995
|
| |
|
|
|
|
| |
MemRegion.
llvm-svn: 73973
|
| |
|
|
| |
llvm-svn: 73954
|
| |
|
|
|
|
| |
Clean up code with ValueManager.
llvm-svn: 73951
|
| |
|
|
|
|
|
| |
preferring to use their replacements in GRState. This further unifies the code
paths for such logic and leads to some code reduction.
llvm-svn: 73771
|
| |
|
|
|
|
| |
GRState->bindXXX and friends (and constify some arguments along the way).
llvm-svn: 73740
|
| |
|
|
|
|
|
|
|
| |
- Remove the 'isFeasible' flag from all uses of 'Assume'.
- Remove the 'Assume' methods from GRStateManager. Now the only way to
create a new GRState with an assumption is to use the new 'assume' methods
in GRState.
llvm-svn: 73731
|
| |
|
|
| |
llvm-svn: 73702
|
| |
|
|
|
|
|
| |
pretty-print a GRState object anywhere it is referenced (instead of
needing a GRStateRef of a GRStateManager handy).
llvm-svn: 73669
|
| |
|
|
|
|
|
|
| |
preprocessor and initialize it early in clang-cc. This
ensures that __has_builtin works in all modes, not just
when ASTContext is around.
llvm-svn: 73319
|
| |
|
|
|
|
|
|
| |
RegionStore needs to know the type of alloca region.
* RegionStoreManager::EvalBinOp() now converts the alloca region to its first
element region, as what is done to symbolic region.
llvm-svn: 72164
|
| |
|
|
|
|
| |
TypedRegion::getValueType().
llvm-svn: 71321
|
| |
|
|
|
|
|
|
|
| |
RValueType => ObjectType
LValueType => LocationType
No functionality change.
llvm-svn: 71304
|
| |
|
|
|
|
|
| |
analysis introspection) when we computed an lvalue. This shouldn't
effect the current analysis results in any way.
llvm-svn: 71169
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ElementRegion. I also removed 'ElementRegion::getArrayRegion',
although we may need to add this back.
This breaks a few test cases with RegionStore:
- 'array-struct.c' triggers an infinite recursion in RegionStoreManager. Need to investigate.
- misc-ps.m triggers a failure with RegionStoreManager as we now get the diagnostic:
'Line 159: Uninitialized or undefined return value returned to caller.'
There were a bunch of places that needed to be edit
RegionStoreManager, and we may not be passing all the correct 'element
types' down from GRExprEngine.
Zhongxing: When you get a chance, could you review this? I could have
easily screwed up something basic in RegionStoreManager.
llvm-svn: 70830
|
| |
|
|
| |
llvm-svn: 70105
|
| |
|
|
|
|
| |
target addresses.
llvm-svn: 69900
|
| |
|
|
| |
llvm-svn: 69754
|
| |
|
|
|
|
|
|
|
|
| |
pointer increment/decrement preserves non-nullness
When the StoreManager doesn't reason well about pointer-arithmetic, propagate
the non-nullness constraint on a pointer value when performing pointer
arithmetic uisng ++/--.
llvm-svn: 69741
|
| |
|
|
|
|
| |
get FunctionDecl with more general utility method.
llvm-svn: 69570
|
| |
|
|
| |
llvm-svn: 68849
|
| |
|
|
|
|
|
|
|
| |
ProgramPoints all the way through to GRCoreEngine.
NSString.m now fails with RegionStoreManager because of the void** cast.
Disabling use of region store for that test for now.
llvm-svn: 68845
|
| |
|
|
| |
llvm-svn: 68771
|
| |
|
|
|
|
|
|
| |
value (argc is guaranteed to be >= 1)
The analyzer now adds the precondition that the first argument of 'main' is > 0.
llvm-svn: 68757
|
| |
|
|
|
|
|
| |
clients of the analyzer to designate custom assertion routines as "noreturn"
functions from the analyzer's perspective but not the compiler's.
llvm-svn: 68746
|
| |
|
|
|
|
|
| |
- Pull SVal::GetConjuredSymbol() and friends into ValueManager. This greatly
simplifies the calling interface to clients.
llvm-svn: 68731
|
| |
|
|
| |
llvm-svn: 68711
|
| |
|
|
| |
llvm-svn: 68700
|
| |
|
|
| |
llvm-svn: 68699
|
| |
|
|
| |
llvm-svn: 68698
|
| |
|
|
| |
llvm-svn: 68697
|
| |
|
|
|
|
| |
sending a message to a nil receiver.
llvm-svn: 68686
|
| |
|
|
|
|
| |
to eliminate the use of loc::SymbolVal.
llvm-svn: 68685
|
| |
|
|
|
|
| |
of messages sent to nil.
llvm-svn: 68683
|
| |
|
|
|
|
| |
nil receivers in message expressions.
llvm-svn: 68672
|
| |
|
|
| |
llvm-svn: 68661
|
| |
|
|
|
|
| |
returns 0 for scalars of size <= sizeof(void*).
llvm-svn: 68629
|
| |
|
|
|
|
|
|
|
| |
"The attached patch generates warnings of cases where an ObjC message is sent to
a nil object and the size of return type of that message is larger than the size
of void pointer. This may result in undefined return values as described in PR
2718. The patch also includes test cases."
llvm-svn: 68585
|
| |
|
|
|
|
|
|
| |
when creating symbolic values, we distinguish between location and non-location
values. For location values, we create a symbolic region instead of a
loc::SymbolVal.
llvm-svn: 68373
|
| |
|
|
|
|
|
| |
should only be an error if that value is consumed. This fix was largely
accomplished by moving 'isConsumedExpr' back to ParentMap.
llvm-svn: 68195
|
| |
|
|
|
|
| |
will be called for every expression in a basic block.
llvm-svn: 68041
|
| |
|
|
| |
llvm-svn: 68024
|
| |
|
|
| |
llvm-svn: 67923
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
LHS type and the computation result type; this encodes information into
the AST which is otherwise non-obvious. Fix Sema to always come up with the
right answer for both of these types. Fix IRGen and the analyzer to
account for these changes. This fixes PR2601. The approach is inspired
by PR2601 comment 2.
Note that this changes real *= complex in CodeGen from a silent
miscompilation to an explicit error.
I'm not really sure that the analyzer changes are correct, or how to
test them... someone more familiar with the analyzer should check those
changes.
llvm-svn: 67889
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Zhongxing and I discussed by email.
Main changes:
- Removed SymIntConstraintVal and SymIntConstraint
- Added SymExpr as a parent class to SymbolData, SymSymExpr, SymIntExpr
- Added nonloc::SymExprVal to wrap SymExpr
- SymbolRef is now just a typedef of 'const SymbolData*'
- Bunch of minor code cleanups in how some methods were invoked (no functionality change)
This changes are part of a long-term plan to have full symbolic expression
trees. This will be useful for lazily evaluating complicated expressions.
llvm-svn: 67731
|
| |
|
|
|
|
|
|
| |
- Conjure symbols at '--' and '++' unary operations
- Add utility method SVal::GetConjuredSymbolVal() and constify some arguments
along the way.
llvm-svn: 67395
|
| |
|
|
| |
llvm-svn: 67260
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
conditions. Currently the analyzer does not reason well about
promotions/truncations of symbolic values, so at branch conditions when we see:
if (condition)
and condition is something like a 'short' or 'char', essentially ignore the
promotion to 'int' so that we track constraints on the original symbolic value.
We only ignore the casts if the underlying type has the same or fewer bits as
the converted type.
This fixes:
<rdar://problem/6619921>
llvm-svn: 66899
|
| |
|
|
|
|
| |
the Condition is null.
llvm-svn: 66636
|