- Mar 04, 2009
-
-
Ted Kremenek authored
- Have 'TypedRegion::getRValueType()' return a null QualType for 'id<...>' instead of aborting. - Change 'TypedRegion::isBoundable()' to return true for all objects with a non-null RValueType (this may not be the final behavior). llvm-svn: 66093
-
Ted Kremenek authored
multiple symbols conjured at the same location. All that is required of the tag is that it is a fixed void* value that points to an memory address that remains valid throughout the remainder of the lifetime of the SymbolManager. llvm-svn: 66092
-
Ted Kremenek authored
llvm-svn: 66036
-
Zhongxing Xu authored
llvm-svn: 66022
-
Ted Kremenek authored
Added the notion of a "boundable region", which is a region that can have a direct binding in the StoreManager. llvm-svn: 66005
-
Ted Kremenek authored
llvm-svn: 65987
-
Ted Kremenek authored
pointer-to-pointer casts involving symbolic locations. llvm-svn: 65984
-
Ted Kremenek authored
llvm-svn: 65983
-
Ted Kremenek authored
retrieval from the store/environment for locations or scalar types. llvm-svn: 65982
-
Ted Kremenek authored
RegionStore::RemoveDeadBindings needs to check all the symbols of the super region of a scanned region as well. llvm-svn: 65981
-
- Mar 03, 2009
-
-
Ted Kremenek authored
SVal::getAsLocSymbol(). This simplifies the code and allows the retain/release checker to (I believe) also correctly reason about location symbols wrapped in SymbolicRegions. Along the way I cleaned up SymbolRef a little, disallowing implicit casts to 'unsigned'. llvm-svn: 65972
-
Ted Kremenek authored
llvm-svn: 65957
-
Ted Kremenek authored
llvm-svn: 65956
-
Ted Kremenek authored
llvm-svn: 65954
-
Ted Kremenek authored
llvm-svn: 65919
-
Ted Kremenek authored
Add StoreManager::getSubRegionMap(). This method returns an opaque mapping for clients of StoreManagers from MemRegions to their subregions. llvm-svn: 65914
-
- Mar 02, 2009
-
-
Ted Kremenek authored
llvm-svn: 65876
-
Ted Kremenek authored
llvm-svn: 65860
-
Zhongxing Xu authored
llvm-svn: 65817
-
Zhongxing Xu authored
offsets for now. llvm-svn: 65814
-
Daniel Dunbar authored
driver taking lib/Driver. llvm-svn: 65811
-
- Mar 01, 2009
-
-
Ted Kremenek authored
llvm-svn: 65764
-
Ted Kremenek authored
llvm-svn: 65763
-
- Feb 28, 2009
-
-
Ted Kremenek authored
llvm-svn: 65717
-
Chris Lattner authored
llvm-svn: 65707
-
Chris Lattner authored
Niklas Larsson! llvm-svn: 65706
-
- Feb 27, 2009
-
-
Ted Kremenek authored
'.' or '->'. llvm-svn: 65651
-
Douglas Gregor authored
giving them rough classifications (normal types, never-canonical types, always-dependent types, abstract type representations) and making it far easier to make sure that we've hit all of the cases when decoding types. Switched some switch() statements on the type class over to using this mechanism, and filtering out those things we don't care about. For example, CodeGen should never see always-dependent or non-canonical types, while debug info generation should never see always-dependent types. More switch() statements on the type class need to be moved over to using this approach, so that we'll get warnings when we add a new type then fail to account for it somewhere in the compiler. As part of this, some types have been renamed: TypeOfExpr -> TypeOfExprType FunctionTypeProto -> FunctionProtoType FunctionTypeNoProto -> FunctionNoProtoType There shouldn't be any functionality change... llvm-svn: 65591
-
- Feb 26, 2009
-
-
Ted Kremenek authored
llvm-svn: 65574
-
Ted Kremenek authored
llvm-svn: 65571
-
Douglas Gregor authored
know how to recover from an error, we can attach a hint to the diagnostic that states how to modify the code, which can be one of: - Insert some new code (a text string) at a particular source location - Remove the code within a given range - Replace the code within a given range with some new code (a text string) Right now, we use these hints to annotate diagnostic information. For example, if one uses the '>>' in a template argument in C++98, as in this code: template<int I> class B { }; B<1000 >> 2> *b1; we'll warn that the behavior will change in C++0x. The fix is to insert parenthese, so we use code insertion annotations to illustrate where the parentheses go: test.cpp:10:10: warning: use of right-shift operator ('>>') in template argument will require parentheses in C++0x B<1000 >> 2> *b1; ^ ( ) Use of these annotations is partially implemented for HTML diagnostics, but it's not (yet) producing valid HTML, which may be related to PR2386, so it has been #if 0'd out. In this future, we could consider hooking this mechanism up to the rewriter to actually try to fix these problems during compilation (or, after a compilation whose only errors have fixes). For now, however, I suggest that we use these code modification hints whenever we can, so that we get better diagnostics now and will have better coverage when we find better ways to use this information. This also fixes PR3410 by placing the complaint about missing tokens just after the previous token (rather than at the location of the next token). llvm-svn: 65570
-
Ted Kremenek authored
llvm-svn: 65568
-
Daniel Dunbar authored
- No functionality change. llvm-svn: 65560
-
Ted Kremenek authored
llvm-svn: 65486
-
Ted Kremenek authored
llvm-svn: 65485
-
- Feb 25, 2009
-
-
Ted Kremenek authored
expressions of the form: 'short x = (y != 10);' While we handle 'int x = (y != 10)' lazily, the cast to another integer type currently loses the symbolic constraint. Eager evaluation of the constraint causes the paths to bifurcate and eagerly evaluate 'y != 10' to a constant of 1 or 0. This should address <rdar://problem/6619921> until we have a better (more lazy approach) for handling promotions/truncations of symbolic integer values. llvm-svn: 65480
-
Ted Kremenek authored
retain/release checker: Implement basic tracking of autorelease stack. Next thing is to wire up pools with their contents. llvm-svn: 65425
-
Ted Kremenek authored
Fix broken logic from my last commit. Branches only occur at basic blocks that end with terminators. llvm-svn: 65410
-
Ted Kremenek authored
Fix diagnostic regression where the leak diagnostic could appear earlier in the path than the branches taken. llvm-svn: 65407
-
- Feb 24, 2009
-
-
Ted Kremenek authored
- For autorelease pool tracking, keep information about the stack of pools separate from their contents. Also, keep track of the number of times an autorelease pool will send the "release" message to an object when the pool is destroyed. - Update CFRefCount::Update to return a new state instead of a reference count binding. This will allow us to implement more complicated semantics with autorelease pools. llvm-svn: 65384
-