|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| ... |  | 
| | 
| 
| 
| 
| 
| 
| 
| | run code when it didn't really need to run.
<rdar://problem/12145006>
llvm-svn: 163450 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | ObjCSelfInitChecker stashes information in the GDM to persist it across
function calls; it is stored in pre-call checks and retrieved post-call.
The post-call check is supposed to clear out the stored state, but was
failing to do so in cases where the call did not have a symbolic return
value.
This was actually causing the inappropriate cache-out from r163361.
Per discussion with Anna, we should never actually cache out when
assuming the receiver of an Objective-C message is non-nil, because
we guarded that node generation by checking that the state has changed.
Therefore, the only states that could reach this exact ExplodedNode are
ones that should have merged /before/ making this assumption.
r163361 has been reverted and the test case removed, since it won't
actually test anything interesting now.
llvm-svn: 163449 | 
| | 
| 
| 
| 
| 
| | No functionality change.
llvm-svn: 163448 | 
| | 
| 
| 
| | llvm-svn: 163447 | 
| | 
| 
| 
| | llvm-svn: 163446 | 
| | 
| 
| 
| 
| 
| | deterministic."
llvm-svn: 163445 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Previously, we'd just keep constraints around forever, which means we'd
never be able to merge paths that differed only in constraints on dead
symbols.
Because we now allow constraints on symbolic expressions, not just single
symbols, this requires changing SymExpr::symbol_iterator to include
intermediate symbol nodes in its traversal, not just the SymbolData leaf
nodes.
llvm-svn: 163444 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | RegionStoreManager was only treating a SymbolicRegion's symbel as live
if there was a binding referring to the region itself.
No test case because constraints are currently not being cleaned out
of the constraint manager at all (even if the symbol is legitimately dead).
llvm-svn: 163443 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | This is necessary because further analysis will assume that the SVal's
type matches the AST type. This caused a crash when trying to perform
a derived-to-base cast on a C++ object that had been new'd to be another
object type.
Yet another crash in PR13763.
llvm-svn: 163442 | 
| | 
| 
| 
| 
| 
| | to avoid this issue.
llvm-svn: 163441 | 
| | 
| 
| 
| 
| 
| | type was being completed.
llvm-svn: 163440 | 
| | 
| 
| 
| 
| 
| 
| 
| | inline stack when we get there by breakpoint.  If we hit a user breakpoint, I set the stop point to the bottom-most frame 'cause that's what we did before.
<rdar://problem/12258999> Setting breakpoint in always inline function is stopping in function above it
llvm-svn: 163439 | 
| | 
| 
| 
| 
| 
| 
| | Teach malloc sizeof checker to find type inconsistencies in multi-
dimensional arrays.
llvm-svn: 163438 | 
| | 
| 
| 
| 
| 
| | Patch and test case by Alastair Murray!
llvm-svn: 163437 | 
| | 
| 
| 
| | llvm-svn: 163436 | 
| | 
| 
| 
| 
| 
| | objects correctly now that we sometimes don't check for inlined breakpoints.
llvm-svn: 163435 | 
| | 
| 
| 
| 
| 
| 
| 
| | in classes. Use it to flag those method implementations which don't
contain call to 'super' if they have 'super' class and it has the method
with this attribute set. This is wip. // rdar://6386358
llvm-svn: 163434 | 
| | 
| 
| 
| | llvm-svn: 163433 | 
| | 
| 
| 
| 
| 
| | In GetFramesUpTo, don't adjust the number of frames for the inlined depth if the number of frames in UINT32_MAX.
llvm-svn: 163432 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | objc_retainAutoreleasedReturnValue, we need to also be killing
them during return peepholing.  Make sure we recognize an
intervening bitcast, but more importantly, assert if we can't
find the asm marker at all.  rdar://problem/12133032
llvm-svn: 163431 | 
| | 
| 
| 
| | llvm-svn: 163430 | 
| | 
| 
| 
| | llvm-svn: 163429 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | with at least one subtle bug in MacOSXKeyChainAPIChecker where the
calling the method was a substitute for assuming a symbolic value
was null (which is not the case).
We still keep ConstraintManager::getSymVal(), but we use that as
an optimization in SValBuilder and ProgramState::getSVal() to
constant-fold SVals.  This is only if the ConstraintManager can
provide us with that information, which is no longer a requirement.
As part of this, introduce a default implementation of
ConstraintManager::getSymVal() which returns null.
For Checkers, introduce ConstraintManager::isNull(), which queries
the state to see if the symbolic value is constrained to be a null
value.  It does this without assuming it has been implicitly constant
folded.
llvm-svn: 163428 | 
| | 
| 
| 
| 
| 
| | looking at PathPieces.
llvm-svn: 163427 | 
| | 
| 
| 
| 
| 
| | comment.
llvm-svn: 163426 | 
| | 
| 
| 
| | llvm-svn: 163425 | 
| | 
| 
| 
| 
| 
| | Patch by Ivan Llopard!
llvm-svn: 163424 | 
| | 
| 
| 
| | llvm-svn: 163423 | 
| | 
| 
| 
| | llvm-svn: 163422 | 
| | 
| 
| 
| | llvm-svn: 163421 | 
| | 
| 
| 
| 
| 
| 
| 
| | For some reason .lcomm uses byte alignment and .comm log2 alignment so we can't
use the same setting for both. Fix this by reintroducing the LCOMM enum.
I verified this against mingw's gcc.
llvm-svn: 163420 | 
| | 
| 
| 
| 
| 
| 
| | This is not an exhaustive set, but something we can build on.
Contributer: Vladimir Medic
llvm-svn: 163419 | 
| | 
| 
| 
| | llvm-svn: 163418 | 
| | 
| 
| 
| 
| 
| | files for debug map + DWARF in .o file debugging.
llvm-svn: 163417 | 
| | 
| 
| 
| | llvm-svn: 163416 | 
| | 
| 
| 
| | llvm-svn: 163415 | 
| | 
| 
| 
| 
| 
| | involvement.
llvm-svn: 163414 | 
| | 
| 
| 
| | llvm-svn: 163413 | 
| | 
| 
| 
| | llvm-svn: 163412 | 
| | 
| 
| 
| | llvm-svn: 163411 | 
| | 
| 
| 
| | llvm-svn: 163410 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | When adding the next statement to the CoreEngine's work list, we take care
of all the special cases first. We certainly shouldn't be building
PostStmts with null statements (the diagnostics machinery assumes such
StmtPoints do not exist), and we should find out sooner if we're missing
a special case.
A refinement of r163402 that should help prevent further issues like PR13760.
llvm-svn: 163409 | 
| | 
| 
| 
| | llvm-svn: 163408 | 
| | 
| 
| 
| 
| 
| 
| | Don't warn when the sizeof argument is an array with the same element
type as the pointee of the return type.
llvm-svn: 163407 | 
| | 
| 
| 
| 
| 
| | changes to RegionStore.
llvm-svn: 163406 | 
| | 
| 
| 
| 
| 
| | bytes, not power of 2.
llvm-svn: 163405 | 
| | 
| 
| 
| | llvm-svn: 163404 | 
| | 
| 
| 
| | llvm-svn: 163403 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | GCC destroys temporary objects more aggressively than clang, so this
results in incorrect behavior when compiling GCC Release builds.
We could avoid this issue under C++11 by preventing getAs from being
called when 'this' is an rvalue:
  template<class ElemTy> const ElemTy *getAs() const & { ... }
  template<class ElemTy> const ElemTy *getAs() const && = delete;
Unfortunately, we do not have compatibility macros for this behavior yet.
This will hopefully fix PR13760 and PR13762.
llvm-svn: 163402 | 
| | 
| 
| 
| | llvm-svn: 163401 |