summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/Consumed.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Reverting r214064 and r215650 while investigating a pesky performance regressionArtyom Skrobov2014-09-231-1/+1
| | | | llvm-svn: 218296
* Use the proper post-order traversal in LiveVariables analysis,Artyom Skrobov2014-08-141-1/+1
| | | | | | | | | | | | | | | | to recover the performance after r214064. Also sorts out the naming for PostOrderCFGView, ReversePostOrderCFGView, BackwardDataflowWorklist and ForwardDataflowWorklist, to match the accepted terminology. Also unifies BackwardDataflowWorklist and ForwardDataflowWorklist to share the "worklist for prioritization, post-order traversal for fallback" logic, and to avoid repetitive sorting. Also cleans up comments in the affected area. llvm-svn: 215650
* Move the logic for testing for namespace std into one location. This check canRichard Trieu2014-05-281-13/+2
| | | | | | be performed by using Decl::isInStdNamespace or DeclContext::isStdNamespace llvm-svn: 209708
* [C++11] Use 'nullptr'. Analysis edition.Craig Topper2014-05-201-22/+22
| | | | llvm-svn: 209191
* Explicitly keep track of temporaries during the consumed analysis.Manuel Klimek2014-05-081-4/+3
| | | | | | | This makes the consumed analysis less dependent on the CFG layout and fixes a bug where we wouldn't warn on an unconsumed value. llvm-svn: 208300
* Updated the attribute tablegen emitter for variadic arguments to emit a ↵Aaron Ballman2014-05-021-7/+3
| | | | | | range accessor in addition to the iterators. Updated code using iterators to use range-based for loops. llvm-svn: 207837
* Renaming the CallableState variadic attribute argument to be CallableStates. ↵Aaron Ballman2014-05-021-2/+2
| | | | | | No functional changes intended. llvm-svn: 207836
* Renaming range-based for loop variables so they don't appear iterator-like.Aaron Ballman2014-04-281-23/+23
| | | | llvm-svn: 207422
* [C++11] Converting to range-based for loops. No functional changes intended.Aaron Ballman2014-04-281-46/+27
| | | | llvm-svn: 207416
* Consumed Analysis: IgnoreParens bugfix.DeLesley Hutchins2014-03-201-29/+38
| | | | llvm-svn: 204395
* [C++11] Replacing DeclStmt iterators decl_begin() and decl_end() with ↵Aaron Ballman2014-03-141-5/+3
| | | | | | iterator_range decls(). Updating all of the usages of the iterators with range-based for loops. llvm-svn: 203947
* [C++11] Replace OwningPtr include with <memory>.Ahmed Charles2014-03-091-1/+1
| | | | llvm-svn: 203389
* Replace OwningPtr with std::unique_ptr.Ahmed Charles2014-03-071-2/+3
| | | | | | This compiles cleanly with lldb/lld/clang-tools-extra/llvm. llvm-svn: 203279
* Change OwningPtr::take() to OwningPtr::release().Ahmed Charles2014-03-071-2/+2
| | | | | | This is a precursor to moving to std::unique_ptr. llvm-svn: 203275
* [C++11] Replacing FunctionDecl iterators param_begin() and param_end() with ↵Aaron Ballman2014-03-071-3/+2
| | | | | | iterator_range params(). Updating all of the usages of the iterators with range-based for loops. llvm-svn: 203248
* Consumed analysis: bugfix for operator calls. Also fixes some formattingDeLesley Hutchins2014-01-161-16/+12
| | | | | | issues, a few testcases, and kills fish. llvm-svn: 199436
* Consumed analysis: add two new attributes which fine-tune the behavior ofDeLesley Hutchins2014-01-141-221/+222
| | | | | | | | consumable objects. These are useful for implementing error codes that must be checked. Patch also includes some significant refactoring, which was necesary to implement the new behavior. llvm-svn: 199169
* Sort all the #include lines with LLVM's utils/sort_includes.py whichChandler Carruth2014-01-071-2/+2
| | | | | | | encodes the canonical rules for LLVM's style. I noticed this had drifted quite a bit when cleaning up LLVM, so wanted to clean up Clang as well. llvm-svn: 198686
* Switched code from using hasAttr followed by getAttr to simply call getAttr ↵Aaron Ballman2013-12-191-74/+43
| | | | | | | | directly and check the resulting value. Also fixes some minor formatting issues surrounding the getAttr code. No functional changes intended. llvm-svn: 197649
* For -Wconsumed, walk the namespaces to find if the top most namespace is "std"Richard Trieu2013-12-171-2/+13
| | | | | | | 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
* Fix PR18260 - Make std::move handling in -Wconsumed only trigger on std::moveRichard Trieu2013-12-161-1/+2
| | | | llvm-svn: 197428
* Consumed analysis: track state of temporary objects.DeLesley Hutchins2013-11-161-152/+190
| | | | | | | | 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
* Fixed bug with checking the kind of types.Chris Wailes2013-10-311-4/+8
| | | | | | | | | | | | | | 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
* Changed tests_typestate to test_typestate for consistency.Chris Wailes2013-10-291-4/+4
| | | | llvm-svn: 193648
* Used OwningPtr to clean up some memory management in Consumed.cpp.Chris Wailes2013-10-251-12/+7
| | | | llvm-svn: 193414
* Replaced duplicate code with calls to forwardInfo.Chris Wailes2013-10-241-27/+17
| | | | | | Also made move constructor handling safer. llvm-svn: 193347
* Consumed analysis: fix assert failure.DeLesley Hutchins2013-10-181-8/+20
| | | | llvm-svn: 193010
* Consumed analysis: assume that non-const reference parameters are initiallyDeLesley Hutchins2013-10-181-13/+21
| | | | | | in the "uknown" state. Patch by chris.wailes@gmail.com. Reviewed by delesley. llvm-svn: 192995
* Consumed analysis: All the return_typestate parameter to be attached to theDeLesley Hutchins2013-10-181-26/+34
| | | | | | default constructor. Patch by chris.wailes@gmail.com, reviewed by delesley. llvm-svn: 192991
* Consumed analysis: Add param_typestate attribute, which specifies thatDeLesley Hutchins2013-10-171-14/+55
| | | | | | | function parameters must be in a particular state. Patch by chris.wailes@gmail.com. Reviewed by delesley@google.com. llvm-svn: 192934
* Consumed Analysis: Allow parameters that are passed by non-const referenceDeLesley Hutchins2013-10-171-3/+43
| | | | | | | 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
* Consumed analysis: fix ICE in handling of loop source locations.DeLesley Hutchins2013-10-171-7/+30
| | | | llvm-svn: 192911
* Consumed analysis: replace the consumes attribute with a set_typestateDeLesley Hutchins2013-10-111-4/+18
| | | | | | attribute. Patch by chris.wailes@gmail.com; reviewed and edited by delesley. llvm-svn: 192515
* Consumed analysis: switch from tests_consumed/unconsumed to a generalDeLesley Hutchins2013-10-111-20/+16
| | | | | | tests_typestate attribute. Patch by chris.wailes@gmail.com. llvm-svn: 192513
* Consumed analysis: check destructor calls.DeLesley Hutchins2013-10-111-20/+55
| | | | | | | 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
* Consumed analysis: improve loop handling. The prior version of the analysisDeLesley Hutchins2013-10-091-36/+139
| | | | | | | | | | | | 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
* Consumed Analysis: Change callable_when so that it can take a list of statesDeLesley Hutchins2013-10-041-77/+92
| | | | | | | | 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
* Fix ICE in consumed analysis when CFG is null.DeLesley Hutchins2013-09-101-2/+6
| | | | llvm-svn: 190447
* Consumed Analysis: The 'consumable' attribute now takes a identifier ↵David Blaikie2013-09-061-50/+60
| | | | | | | | | | | | | 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
* Fix non-void return warning, and format.Eric Christopher2013-09-031-3/+4
| | | | llvm-svn: 189845
* Consumed analysis: add return_typestate attribute.DeLesley Hutchins2013-09-031-4/+104
| | | | | | | | | | 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
* Consumed analysis: add 'consumable' class attribute.DeLesley Hutchins2013-08-301-41/+10
| | | | | | | | | | | | 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
* Consumed analysis: track function parameters.DeLesley Hutchins2013-08-291-10/+27
| | | | | | Patch by chris.wailes@gmail.com. llvm-svn: 189616
* Consumed analysis: non-const methods no longer transfer an object into anDeLesley Hutchins2013-08-291-12/+2
| | | | | | unknown state. Patch by chris.wailes@gmail.com. llvm-svn: 189612
* Silencing the warning from r189605 in a more conformant manner.Aaron Ballman2013-08-291-1/+1
| | | | llvm-svn: 189606
* Silencing a rather spurious warning from MSVC 11 about not all control paths ↵Aaron Ballman2013-08-291-0/+1
| | | | | | returning a value (hint: they do). llvm-svn: 189605
* Fix warning about anonymous structs in anonymous unions.Eric Christopher2013-08-291-6/+8
| | | | llvm-svn: 189596
* Consumed analysis: improve handling of conditionals.DeLesley Hutchins2013-08-291-178/+473
| | | | | | | | | | | | | | 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
* Consumed analyis: Renamed *PStatus to *PInfo.DeLesley Hutchins2013-08-261-48/+48
| | | | | | | | | 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
* Update to consumed analysis.DeLesley Hutchins2013-08-221-76/+93
| | | | | | | | | | | Patch by chris.wailes@gmail.com. The following functionality was added: * The same functionality is now supported for both CXXOperatorCallExprs and CXXMemberCallExprs. * Factored out some code in StmtVisitor. * Removed variables from the state map when their destructors are encountered. * Started adding documentation for the consumed analysis attributes. llvm-svn: 189059
OpenPOWER on IntegriCloud