| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
change intended -- this only replaces Boolean uses of getAttr.
llvm-svn: 197648
|
|
|
|
|
|
|
| |
to determine if a move function is the std::move function. This allows functions
like std::__1::move to also be treated a the move function.
llvm-svn: 197445
|
|
|
|
| |
llvm-svn: 197428
|
|
|
|
| |
llvm-svn: 197094
|
|
|
|
|
|
|
|
| |
target_link_libraries() and LLVM_LINK_COMPONENTS.
I will prune redundant dependencies later.
llvm-svn: 196800
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit r189090.
The original patch introduced regressions (see the added live-variables.* tests). The patch depends on the correctness of live variable analyses, which are not computed correctly. I've opened PR18159 to track the proper resolution to this problem.
The patch was a stepping block to r189746. This is why part of the patch reverts temporary destructor tests that started crashing. The temporary destructors feature is disabled by default.
llvm-svn: 196593
|
|
|
|
| |
llvm-svn: 196510
|
|
|
|
|
|
|
| |
This patch tries to avoid unrelated changes other than fixing a few
hyphen-related ambiguities in nearby lines.
llvm-svn: 196466
|
|
|
|
| |
llvm-svn: 195777
|
|
|
|
|
|
| |
object in many cases, which could have led to crashes were it ever to be null. Now passing the object by reference instead of by pointer because it is never null in practice. No functional changes intended.
llvm-svn: 195043
|
|
|
|
|
|
|
|
| |
Earlier versions discarded the state too soon, and did not track state changes,
e.g. when passing a temporary to a move constructor. Patch by
chris.wailes@gmail.com; review and minor fixes by delesley.
llvm-svn: 194900
|
|
|
|
|
|
| |
Currently supported only with -Wthread-safety-beta.
llvm-svn: 194275
|
|
|
|
|
|
| |
test case.
llvm-svn: 194157
|
|
|
|
|
|
| |
on smart pointers. -Wthread-safety-beta only.
llvm-svn: 194103
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The isLValueReferenceType function checks to see if the QualType's
canonical type is an LValue reference, and not if the QualType
itself is an LValue reference. This caused a segfault when trying
to cast the QualType's Type to a LValueReference. This is now
fixed by casting the result of getCanonicalType().
In addition, a test was added to isConsumableType to prevent
segfaults when a type being tested by the analysis is a reference
to a pointer or a pointer to a reference.
llvm-svn: 193751
|
|
|
|
| |
llvm-svn: 193648
|
|
|
|
| |
llvm-svn: 193414
|
|
|
|
|
|
| |
Also made move constructor handling safer.
llvm-svn: 193347
|
|
|
|
|
|
|
|
| |
...rather than segfaulting.
Patch by Enrico P!
llvm-svn: 193208
|
|
|
|
|
|
|
|
|
|
| |
* NamedDecl and CXXMethodDecl were missing getMostRecentDecl.
* The const version can just forward to the non const.
* getMostRecentDecl can use cast instead of cast_or_null.
This then removes some casts from the callers.
llvm-svn: 193039
|
|
|
|
| |
llvm-svn: 193010
|
|
|
|
|
|
| |
in the "uknown" state. Patch by chris.wailes@gmail.com. Reviewed by delesley.
llvm-svn: 192995
|
|
|
|
|
|
| |
default constructor. Patch by chris.wailes@gmail.com, reviewed by delesley.
llvm-svn: 192991
|
|
|
|
|
|
|
| |
function parameters must be in a particular state. Patch by
chris.wailes@gmail.com. Reviewed by delesley@google.com.
llvm-svn: 192934
|
|
|
|
|
|
|
| |
to be treated as return values, and marked with the "returned_typestate"
attribute. Patch by chris.wailes@gmail.com; reviewed by delesley@google.com.
llvm-svn: 192932
|
|
|
|
| |
llvm-svn: 192911
|
|
|
|
|
|
| |
attribute. Patch by chris.wailes@gmail.com; reviewed and edited by delesley.
llvm-svn: 192515
|
|
|
|
|
|
| |
tests_typestate attribute. Patch by chris.wailes@gmail.com.
llvm-svn: 192513
|
|
|
|
|
|
|
| |
This allows the callable_when attribute to be attached to destructors.
Original patch by chris.wailes@gmail.com, reviewed and edited by delesley.
llvm-svn: 192508
|
|
|
|
|
|
|
|
|
|
|
|
| |
marked all variables as "unknown" at the start of a loop. The new version
keeps the initial state of variables unchanged, but issues a warning if the
state at the end of the loop is different from the state at the beginning.
This patch will eventually be replaced with a more precise analysis.
Initial patch by chris.wailes@gmail.com. Reviewed and edited by
delesley@google.com.
llvm-svn: 192314
|
|
|
|
|
|
|
|
| |
that a function can be called in. This reduced the total number of annotations
needed and makes writing more complicated behaviour less burdensome.
Patch by chriswails@gmail.com.
llvm-svn: 191983
|
|
|
|
| |
llvm-svn: 191177
|
|
|
|
| |
llvm-svn: 191176
|
|
|
|
|
|
|
|
|
|
|
| |
variable uninitialized every time we reach its (reachable) declaration, or
every time we call the surrounding function, promote the warning from
-Wmaybe-uninitialized to -Wsometimes-uninitialized.
This is still slightly weaker than desired: we should, in general, warn
if a use is uninitialized the first time it is evaluated.
llvm-svn: 190623
|
|
|
|
| |
llvm-svn: 190447
|
|
|
|
|
|
|
| |
The predicates in CXXRecordDecl which test various properties of special
members can't be called on incomplete decls.
llvm-svn: 190353
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
If a noreturn destructor is executed while returning a value from a function,
the resulting CFG has had two edges to the exit block. This crashed the analyzer,
because it expects that blocks with no terminators have only one outgoing edge.
I added code to avoid creating the second edge in this case.
PS: The crashes did not manifest themselves always, as usually the
NoReturnFunctionChecker would stop program evaluation before the analyzer hit
the assertion, but in the case of lifetime extended temporaries, the checker
failed to do that (which is a separate bug in itself).
Reviewers: jordan_rose
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D1513
llvm-svn: 190125
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
specifying the default assumed state for objects of this class
This information is used for return states and pass-by-value parameter
states.
Patch by Chris Wailes.
Review by DeLesley Hutchins and Aaron Ballman.
llvm-svn: 190116
|
|
|
|
| |
llvm-svn: 189845
|
|
|
|
|
|
|
|
|
|
| |
Patch by chris.wailes@gmail.com
Functions can now declare what state the consumable type the are returning will
be in. This is then used on the caller side and checked on the callee side.
Constructors now use this attribute instead of the 'consumes' attribute.
llvm-svn: 189843
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This paves the way for adding support for modeling the destructor of a
region before it is deleted. The statement "delete <expr>" now generates
this series of CFG elements:
1. <expr>
2. [B1.1]->~Foo() (Implicit destructor)
3. delete [B1.1]
Patch by Karthik Bhat!
llvm-svn: 189828
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is an improved version of r186498. It enables ExprEngine to reason about
temporary object destructors. However, these destructor calls are never
inlined, since this feature is still broken. Still, this is sufficient to
properly handle noreturn temporary destructors.
Now, the analyzer correctly handles expressions like "a || A()", and executes the
destructor of "A" only on the paths where "a" evaluted to false.
Temporary destructor processing is still off by default and one has to
explicitly request it by setting cfg-temporary-dtors=true.
Reviewers: jordan_rose
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D1259
llvm-svn: 189746
|
|
|
|
|
|
|
|
|
|
|
|
| |
Patch by chris.wailes@gmail.com
Adds the 'consumable' attribute that can be attached to classes. This replaces
the previous method of scanning a class's methods to see if any of them have
consumed analysis attributes attached to them. If consumed analysis attributes
are attached to methods of a class that isn't marked 'consumable' a warning
is generated.
llvm-svn: 189702
|
|
|
|
|
|
| |
Patch by chris.wailes@gmail.com.
llvm-svn: 189616
|
|
|
|
|
|
| |
unknown state. Patch by chris.wailes@gmail.com.
llvm-svn: 189612
|
|
|
|
| |
llvm-svn: 189606
|
|
|
|
|
|
| |
returning a value (hint: they do).
llvm-svn: 189605
|
|
|
|
| |
llvm-svn: 189596
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Patch by chris.wailes@gmail.com.
* The TestedVarsVisitor was folded into the ConsumedStmtVisitor.
* The VarTestResult class was updated to allow these changes.
* The PropagationInfo class was updated for the same reasons.
* Correctly handle short-circuiting of Boolean operations.
* Blocks are now marked as unreachable when we can statically prove we will
never branch to them.
* Unreachable blocks are skipped by the analysis.
llvm-svn: 189594
|
|
|
|
|
|
|
|
|
| |
The change was made for readability, as the PropagationInfo objects don't
always contain a status. This is submitted as a separate patch because it
touches a lot of lines and I don't want it cluttering up the next patch.
Patch by chris.wailes@gmail.com.
llvm-svn: 189278
|