DeLesley Hutchins
3efd0495a0
Thread Safety Analysis: add a -Wthread-safety-negative flag that warns whenever
...
a mutex is acquired, but corresponding mutex is not provably not-held. This
is based on the earlier negative requirements patch.
llvm-svn: 214789
2014-08-04 22:13:06 +00:00
DeLesley Hutchins
4266522ab9
Thread safety analysis: Add support for negative requirements, which are
...
capability expressions of the form !expr, and denote a capability that must
not be held.
llvm-svn: 214725
2014-08-04 16:10:59 +00:00
Manuel Klimek
b0042c414e
Fix some cases of incorrect handling of lifetime extended temporaries.
...
MaterializeTemporaryExpr already contains information about the lifetime
of the temporary; if the lifetime is not the full statement, we do not
want to emit a destructor at the end of the full statement for it.
llvm-svn: 214292
2014-07-30 08:34:42 +00:00
DeLesley Hutchins
ea1f83385f
Thread Safety Analysis: Replace the old and broken SExpr with the new
...
til::SExpr. This is a large patch, with many small changes to pretty printing
and expression lowering to make the new SExpr representation equivalent in
functionality to the old.
llvm-svn: 214089
2014-07-28 15:57:27 +00:00
Artyom Skrobov
12ce6d91a1
Factoring DataflowWorklist out of LiveVariables and UninitializedValues analyses
...
llvm-svn: 214064
2014-07-28 08:47:38 +00:00
Richard Smith
4137af286f
When looking for temporary dtors while building the CFG, do not walk into
...
lambda expressions (other than their capture initializers) nor blocks. Do walk
into default argument expressions and default initializer expressions.
These bugs were causing us to produce broken CFGs whenever a lambda expression
was used to initialize a libstdc++ std::function object!
llvm-svn: 214050
2014-07-27 05:12:49 +00:00
NAKAMURA Takumi
04b8b37f56
Prune Redundant libdeps in CMake's target_link_libraries and LLVMBuild.txt.
...
I checked this with Release+Asserts on x86_64-mingw32. Please restore partially if this were overkill.
llvm-svn: 213064
2014-07-15 11:37:03 +00:00
NAKAMURA Takumi
23b702c8de
[CMake] Update libdeps.
...
llvm-svn: 212920
2014-07-14 05:01:53 +00:00
NAKAMURA Takumi
4a070dc428
[CMake] Reorder libdeps by alphabetical order.
...
llvm-svn: 212919
2014-07-14 04:59:27 +00:00
Anna Zaks
a6fea1386f
Fix a crash in Retain Count checker error reporting
...
Fixes a crash in Retain Count checker error reporting logic by handing
the allocation statement retrieval from a BlockEdge program point.
Also added a simple CFG dump routine for debugging.
llvm-svn: 210960
2014-06-13 23:47:38 +00:00
Richard Smith
d88b44d444
PR19996: don't crash if -Wuninitialized sees a c++1y lambda init-capture.
...
llvm-svn: 210615
2014-06-11 00:31:00 +00:00
Richard Trieu
ddd01cec0e
Removing an "if (this == nullptr)" check from two print methods. The condition
...
will never be true in a well-defined context. The checking for null pointers
has been moved into the caller logic so it does not rely on undefined behavior.
llvm-svn: 210498
2014-06-09 22:53:25 +00:00
DeLesley Hutchins
b603192124
Thread Safety Analysis: implement review suggestions from Aaron Ballman.
...
llvm-svn: 209847
2014-05-29 21:24:16 +00:00
DeLesley Hutchins
44be81b5a9
Thread Safety Analysis: update TIL traversal mechanism to allow arbitrary
...
local contexts. Also includes some minor refactoring.
llvm-svn: 209774
2014-05-28 21:28:13 +00:00
Nikola Smiljanic
a9c452121a
Fix line endings.
...
llvm-svn: 209727
2014-05-28 11:19:43 +00:00
Richard Trieu
c771d5d79f
Move the logic for testing for namespace std into one location. This check can
...
be performed by using Decl::isInStdNamespace or DeclContext::isStdNamespace
llvm-svn: 209708
2014-05-28 02:16:01 +00:00
Manuel Klimek
5fbdc93d97
Make dead return statement detection more robust against changes in the CFG.
...
This change is a precondition to the proposed change to handle temporary
dtors correctly.
The idea is to explicitly search for the next return that doesn't have other
paths into it (that is, if the current block is dead, the block containing the
return must be dead, too). Thus, introducing non-control-flow block
transitions will not break the logic.
llvm-svn: 209531
2014-05-23 17:09:56 +00:00
Jordan Rose
7afd71e4ff
Add a check for tautological bitwise comparisons to -Wtautological-compare.
...
This catches issues like:
if ((x & 8) == 4) { ... }
if ((x | 4) != 3) { ... }
Patch by Anders Rönnholm!
llvm-svn: 209221
2014-05-20 17:31:11 +00:00
Craig Topper
2554294321
[C++11] Use 'nullptr'. Analysis edition.
...
llvm-svn: 209191
2014-05-20 04:30:07 +00:00
DeLesley Hutchins
f4b5e7c60f
Thread Safety Analysis: add new node types to thread safety TIL.
...
This fills in a few missing gaps in functionality.
llvm-svn: 208830
2014-05-15 00:50:36 +00:00
Aaron Ballman
9ee54d119c
Converting some for loops to use range-based for loops. No functional changes intended.
...
llvm-svn: 208810
2014-05-14 20:42:13 +00:00
Aaron Ballman
59a72b93a2
Amending r208783 based on a suggestion by David Blaikie.
...
llvm-svn: 208800
2014-05-14 18:32:59 +00:00
Aaron Ballman
42f9a8a7f9
Replacing some manual iterations with standard algorithms. No functional changes intended.
...
llvm-svn: 208783
2014-05-14 15:01:43 +00:00
Aaron Ballman
2f3fc6badd
Formatting and style changes; no functional changes intended.
...
llvm-svn: 208774
2014-05-14 13:03:55 +00:00
Aaron Ballman
0c6a14ca82
Amending r208439 to remove buildLExpr; this code isn't strictly required yet, and fixes a dead code warning.
...
llvm-svn: 208440
2014-05-09 18:44:48 +00:00
Aaron Ballman
7c192b452f
Add the ability to use logical expressions for capability attributes. This is to allow requirements to be expressed not just in terms of lists, but in terms of logical expressions. Eg)
...
void foo(void) __attribute__((requires_capability((FlightControl || Worker) && !Logger)));
This is WIP code.
llvm-svn: 208439
2014-05-09 18:26:23 +00:00
Benjamin Kramer
a7bcab75d2
ThreadSafetyAnalysis: Don't crash when trying to analyze objc methods.
...
The thread safety analysis isn't very useful in ObjC (you can't annotate
ObjC classes or methods) but we can still analyze the actual code and
show violations in usage of C/C++ functions.
Fixes PR19541, which does not use thread safety attributes but crashes
with -Weverything.
llvm-svn: 208436
2014-05-09 17:08:01 +00:00
Manuel Klimek
b33bded176
Explicitly keep track of temporaries during the consumed analysis.
...
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
2014-05-08 11:50:00 +00:00
Manuel Klimek
75f34c1386
Fix handling of condition variables in the face of temp dtors.
...
The assignment needs to be before the destruction of the temporary.
This patch calls out to addStmt, which invokes VisitDeclStmt, which has
all the correct logic for handling temporaries.
llvm-svn: 207985
2014-05-05 18:21:06 +00:00
Nico Weber
b0f9e4ace7
Remove unused typedef found by gcc's -Wunused-local-typedefs.
...
llvm-svn: 207870
2014-05-02 21:22:21 +00:00
Hans Wennborg
802df13e4d
Fix bad comment from r207573.
...
llvm-svn: 207854
2014-05-02 18:12:30 +00:00
Aaron Ballman
a82eaa70f1
Updated the attribute tablegen emitter for variadic arguments to emit a range accessor in addition to the iterators. Updated code using iterators to use range-based for loops.
...
llvm-svn: 207837
2014-05-02 13:35:42 +00:00
Aaron Ballman
73b3651e9d
Renaming the CallableState variadic attribute argument to be CallableStates. No functional changes intended.
...
llvm-svn: 207836
2014-05-02 13:17:57 +00:00
Hans Wennborg
df51ee6c50
scanf analysis: handle scanlists that start with ^] (PR19559)
...
llvm-svn: 207573
2014-04-29 19:42:27 +00:00
Aaron Ballman
35897d97a3
Renaming range-based for loop variables so they don't appear iterator-like.
...
llvm-svn: 207422
2014-04-28 14:56:59 +00:00
Aaron Ballman
fe46e62e99
[C++11] Converting to range-based for loops. No functional changes intended.
...
llvm-svn: 207416
2014-04-28 13:01:32 +00:00
Aaron Ballman
8e8026d5b3
Replacing a naked pointer with a unique_ptr. No functional changes intended.
...
llvm-svn: 206986
2014-04-23 14:26:59 +00:00
Aaron Ballman
bf58a6a892
Updated to be a bit more const friendly. Also switched the linkage to be static since this function is file-local. No functional changes intended.
...
llvm-svn: 206982
2014-04-23 13:58:21 +00:00
DeLesley Hutchins
f1a311653a
Thread safety analysis: add array operations to SExpr.
...
llvm-svn: 206907
2014-04-22 17:31:23 +00:00
DeLesley Hutchins
7834001496
Thread safety analysis: fix warning.
...
llvm-svn: 206899
2014-04-22 14:51:04 +00:00
Chandler Carruth
1034666777
[Modules] Fix potential ODR violations by sinking the DEBUG_TYPE
...
definition below all of the header #include lines, clang edition.
If you want more details about this, you can see some of the commits to
Debug.h in LLVM recently. This is just the clang section of a cleanup
I've done for all uses of DEBUG_TYPE in LLVM.
llvm-svn: 206849
2014-04-22 03:17:02 +00:00
DeLesley Hutchins
f8b412adbb
Thread safety analysis: misc updates to SExpr handling. Fix to minimal SSA,
...
function parameters, and compound assignment.
llvm-svn: 206827
2014-04-21 23:18:18 +00:00
DeLesley Hutchins
a9db0019a2
Thread Safety Analysis: Convert to minimal SSA.
...
llvm-svn: 206681
2014-04-19 03:54:41 +00:00
DeLesley Hutchins
ae497deddf
Thread Safety Analysis: Update SSA pass to handle loops.
...
llvm-svn: 206676
2014-04-19 00:35:54 +00:00
Aaron Ballman
0491afaf5f
Updating to use more range-based for loops, nullptr and auto. No functional changes.
...
llvm-svn: 206590
2014-04-18 13:13:15 +00:00
Aaron Ballman
e80bfcd048
Making some public members into private members. This also introduces a bit more const-correctness, and now uses some range-based for loops. No functional changes intended.
...
llvm-svn: 206503
2014-04-17 21:44:08 +00:00
Aaron Ballman
ed5aced64e
Since the object is new'ed in the enterCFG function, now deleting in the exitCFG function instead of the destructor to ensure proper pairing. This allows reuse of the builder without creating a memory leak.
...
llvm-svn: 206471
2014-04-17 15:23:50 +00:00
Ted Kremenek
6f375e5604
-Wunreachable-code: refine recognition of unreachable "sigil" to cope with implicit casts in C++.
...
Fixes <rdar://problem/16631033>.
llvm-svn: 206360
2014-04-16 07:26:09 +00:00
DeLesley Hutchins
aab9aff058
Thread Safety Analysis: rewrite SSA pass to use the new SExpr and CFG
...
traversal system. The new pass is still undergoing testing; no change in
functionality.
llvm-svn: 206338
2014-04-15 23:23:19 +00:00
Richard Trieu
e729d9b598
Fix typo from r206232
...
llvm-svn: 206234
2014-04-15 01:06:38 +00:00
Richard Trieu
e9fa266cba
Fix a bad interaction between -Wtautological-overlap-compare and delayed
...
diagnostics which caused delayed diagnostics on dead paths to be emitted.
llvm-svn: 206232
2014-04-15 00:57:50 +00:00
DeLesley Hutchins
7e615c2f65
Thread Safety Analysis: reorganized SExpr header files. No change in
...
functionality.
llvm-svn: 205936
2014-04-09 22:39:43 +00:00
Aaron Ballman
28347a72c9
Thread Safety Analysis: now with less includes. No functional changes.
...
llvm-svn: 205929
2014-04-09 21:12:04 +00:00
Aaron Ballman
3f993c1320
Thread Safety Analysis: some minor cleanups to the latest thread safety changes. No functional changes intended.
...
* Adds an iterator_range interface to CallExpr to get the arguments
* Modifies SExpr such that it must be allocated in the Arena, and cannot be deleted
* Minor const-correctness and nullptr updates
* Adds some operator!= implementations to complement operator==
* Removes unused functionality
llvm-svn: 205915
2014-04-09 17:45:44 +00:00
DeLesley Hutchins
f7813c56b4
Thread Safety Analysis. Misc fixes to SExpr code, responding to code review
...
by Aaron Ballman.
llvm-svn: 205809
2014-04-08 22:21:22 +00:00
DeLesley Hutchins
11bb308739
Thread Safety Analysis: various fixes to new SExpr code.
...
Implemented ownership policy, updated to use nullptr, const-cleanup.
llvm-svn: 205745
2014-04-07 22:56:24 +00:00
DeLesley Hutchins
b2213910de
Thread Safety Analysis: update to internal SExpr handling.
...
This patch is the first part of a significant refactoring that seeks to restore
sanity to way thread safety analysis deals with capability expressions. The
current patch merely provides an outline of the structure of the new system.
It's not yet connected to the actual analysis, so there's no change in
functionality.
llvm-svn: 205728
2014-04-07 18:09:54 +00:00
Richard Trieu
f935b562b9
Add a new subgroup to -Wtautological-compare, -Wtautological-overlap-compare,
...
which warns on compound conditionals that always evaluate to the same value.
For instance, (x > 5 && x < 3) will always be false since no value for x can
satisfy both conditions.
This patch also changes the CFG to use these tautological values for better
branch analysis. The test for -Wunreachable-code shows how this change catches
additional dead code.
Patch by Anders Rönnholm.
llvm-svn: 205665
2014-04-05 05:17:01 +00:00
Aaron Ballman
e044904301
Updating the capability attribute diagnostics to be more capability-neutral. Instead of using terminology such as "lock", "unlock" and "locked", the new terminology is "acquire", "release" and "held". Additionally, the capability attribute's name argument is now reported as part of the diagnostic, instead of hard coding as "mutex."
...
llvm-svn: 205359
2014-04-01 21:43:23 +00:00
Jordan Rose
398fb00e1e
[analyzer] Fix a CFG printing bug.
...
Also, add several destructor-related tests. Most of them don't work yet, but it's
good to have them recorded.
Patch by Alex McCarthy!
llvm-svn: 205326
2014-04-01 16:39:33 +00:00
Ted Kremenek
ab57a1555a
[-Wunreachable-code] Expand paren-suppression heuristic to C++/ObjC bools.
...
llvm-svn: 205074
2014-03-29 04:49:20 +00:00
Ted Kremenek
ec3bbf4933
Improve -Wunreachable-code to provide a means to indicate code is intentionally marked dead via if((0)).
...
Taking a hint from -Wparentheses, use an extra '()' as a sigil that
a dead condition is intentionally dead. For example:
if ((0)) { dead }
When this sigil is found, do not emit a dead code warning. When the
analysis sees:
if (0)
it suggests inserting '()' as a Fix-It.
llvm-svn: 205069
2014-03-29 00:35:20 +00:00
Nuno Lopes
fb744589bc
remove a bunch of unused private methods
...
found with a smarter version of -Wunused-member-function that I'm playwing with.
Appologies in advance if I removed someone's WIP code.
ARCMigrate/TransProperties.cpp | 8 -----
AST/MicrosoftMangle.cpp | 1
Analysis/AnalysisDeclContext.cpp | 5 ---
Analysis/LiveVariables.cpp | 14 ----------
Index/USRGeneration.cpp | 10 -------
Sema/Sema.cpp | 33 +++++++++++++++++++++---
Sema/SemaChecking.cpp | 3 --
Sema/SemaDecl.cpp | 20 ++------------
StaticAnalyzer/Checkers/GenericTaintChecker.cpp | 1
9 files changed, 34 insertions(+), 61 deletions(-)
llvm-svn: 204561
2014-03-23 17:12:37 +00:00
Aaron Ballman
df115d9bf3
The release_capability, release_shared_capability and release_generic_capability functions are now functionally distinct for capability analysis. The unlock_function attribute maps directly to release_generic_capability.
...
llvm-svn: 204469
2014-03-21 14:48:48 +00:00
Ted Kremenek
1421037ece
[-Wunreachable-code] add a specialized diagnostic for unreachable increment expressions of loops.
...
llvm-svn: 204430
2014-03-21 06:02:36 +00:00
DeLesley Hutchins
d7fa5bd431
Consumed Analysis: IgnoreParens bugfix.
...
llvm-svn: 204395
2014-03-20 20:39:20 +00:00
Ted Kremenek
d4576318b4
[-Wunreachable-code] Tweak isTrivialDoWhile() to handle implicit casts.
...
llvm-svn: 204376
2014-03-20 18:47:53 +00:00
Aaron Ballman
18d85aed39
Replacing the exclusive_lock_function, shared_lock_function and unlock_function attributes with the acquire_capability and release_capability attributes. The old spellings will continue to work, but the underlying semantic attributes have been replaced.
...
Downgraded the capability diagnostics from error to warning to match the desired behavior, and updated the existing test cases.
llvm-svn: 204350
2014-03-20 16:02:49 +00:00
Ted Kremenek
f5ae0bc671
[-Wunreachable-code] Look through member accesses for 'static const bool' configuration values.
...
llvm-svn: 204315
2014-03-20 06:44:35 +00:00
Ted Kremenek
2766ad27e8
[-Wunreachable-code] constexpr functions can be used as configuration values.
...
llvm-svn: 204308
2014-03-20 06:07:35 +00:00
Ted Kremenek
f3c93bb61b
[-Wunreachable-code] Simplify and broad -Wunreachable-code-return, including nontrivial returns.
...
The exception is return statements that include control-flow,
which are clearly doing something "interesting".
99% of the cases I examined for -Wunreachable-code that fired
on return statements were not interesting enough to warrant
being in -Wunreachable-code by default. Thus the move to
include them in -Wunreachable-code-return.
This simplifies a bunch of logic, including removing the ad hoc
logic to look for std::string literals.
llvm-svn: 204307
2014-03-20 06:07:30 +00:00
Jordan Rose
177b0a3600
scanf format checking: include the buffer length in the fix-it for %s.
...
Patch by Zach Davis!
llvm-svn: 204300
2014-03-20 03:32:39 +00:00
Aaron Ballman
c7e4e219b5
[C++11] Replacing CompoundStmt iterators body_begin() and body_end() with iterator_range body(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 204040
2014-03-17 14:19:37 +00:00
Benjamin Kramer
8cef8867ee
Remove dead functions from unreachable code analysis.
...
llvm-svn: 204004
2014-03-15 10:20:49 +00:00
Ted Kremenek
9dfe400dc2
-Wunreachable-code: treat 'const bool' locals as control values.
...
llvm-svn: 204001
2014-03-15 06:47:45 +00:00
Ted Kremenek
ad8753c00e
Further refine -Wunreachable-code groups so that -Wno-unreachable-code-break doesn't turn off all unreachable code warnings.
...
Also relax unreachable 'break' and 'return' to not check for being
preceded by a call to 'noreturn'. That turns out to not be so
interesting in practice.
llvm-svn: 204000
2014-03-15 05:47:06 +00:00
Ted Kremenek
1a8641c1e7
Start breaking -Wunreachable-code up into different diagnostic groups.
...
Recent work on -Wunreachable-code has focused on suppressing uninteresting
unreachable code that center around "configuration values", but
there are still some set of cases that are sometimes interesting
or uninteresting depending on the codebase. For example, a dead
"break" statement may not be interesting for a particular codebase,
potentially because it is auto-generated or simply because code
is written defensively.
To address these workflow differences, -Wunreachable-code is now
broken into several diagnostic groups:
-Wunreachable-code: intended to be a reasonable "default" for
most users.
and then other groups that turn on more aggressive checking:
-Wunreachable-code-break: warn about dead break statements
-Wunreachable-code-trivial-return: warn about dead return statements
that return "trivial" values (e.g., return 0). Other return
statements that return non-trivial values are still reported
under -Wunreachable-code (this is an area subject to more refinement).
-Wunreachable-code-aggressive: supergroup that enables all these
groups.
The goal is to eventually make -Wunreachable-code good enough to
either be in -Wall or on-by-default, thus finessing these warnings
into different groups helps achieve maximum signal for more users.
TODO: the tests need to be updated to reflect this extra control
via diagnostic flags.
llvm-svn: 203994
2014-03-15 01:26:32 +00:00
Aaron Ballman
9371dd2287
[C++11] Replacing BlockDecl iterators capture_begin() and capture_end() with iterator_range captures(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203958
2014-03-14 18:34:04 +00:00
Aaron Ballman
535bbcccb1
[C++11] Replacing DeclStmt iterators decl_begin() and decl_end() with iterator_range decls(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203947
2014-03-14 17:01:24 +00:00
Aaron Ballman
d85eff49a3
[C++11] Replacing ObjCCategoryDecl iterators propimpl_begin() and propimpl_end() with iterator_range property_impls(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203930
2014-03-14 15:02:45 +00:00
Craig Topper
b45acb8a16
[C++11] Add 'override' keyword to virtual methods that override their base class.
...
llvm-svn: 203893
2014-03-14 06:02:07 +00:00
Aaron Ballman
0ad78303de
[C++11] Replacing CXXRecordDecl iterators init_begin() and init_end() with iterator_range inits(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203819
2014-03-13 17:34:31 +00:00
Aaron Ballman
445a939db8
[C++11] Replacing CXXRecordDecl iterators vbases_begin() and vbases_end() with iterator_range vbases(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203808
2014-03-13 16:15:17 +00:00
Aaron Ballman
574705ed7f
[C++11] Replacing CXXRecordDecl iterators bases_begin() and bases_end() with iterator_range bases(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203803
2014-03-13 15:41:46 +00:00
DeLesley Hutchins
d1c9b37db9
Thread safety analysis: move smart pointer checks from -Wthread-safety-beta
...
to -Wthread-safety.
llvm-svn: 203510
2014-03-10 23:03:49 +00:00
Aaron Ballman
be22bcb180
[C++11] Replacing DeclBase iterators specific_attr_begin() and specific_attr_end() with iterator_range specific_attrs(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203474
2014-03-10 17:08:28 +00:00
Ahmed Charles
dfca6f97bc
[C++11] Replace OwningPtr include with <memory>.
...
llvm-svn: 203389
2014-03-09 11:36:40 +00:00
Ted Kremenek
2dd810a331
[-Wunreachable-code] Handle Objective-C bool literals in 'isConfigurationValue'.
...
This includes special casing 'YES' and 'NO', which are constants
defined as macros.
llvm-svn: 203380
2014-03-09 08:13:49 +00:00
Ted Kremenek
c980afc578
[-Wunreachable-code] Tweak heuristic for configuration values to include arithmetic operations involving sizeof(), but not raw integers.
...
This case was motivated by a false positive with the
llvm::AlignOf<> specialization in LLVM.
llvm-svn: 203363
2014-03-08 23:20:11 +00:00
Aaron Ballman
e8a8baef44
[C++11] Replacing RecordDecl iterators field_begin() and field_end() with iterator_range fields(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203355
2014-03-08 20:12:42 +00:00
Ted Kremenek
efea63450b
[-Wunreachabe-code] Don't warn about unreachable destructors for temporaries.
...
This can possibly be refined later, but right now the experience
is so incomprehensible for a user to understand what is going on
this isn't a useful warning.
llvm-svn: 203336
2014-03-08 02:22:32 +00:00
Ted Kremenek
fcc1417fad
Fix CFG bug where the 'isTemporaryDtorsBranch' bit was silently lost for terminators.
...
llvm-svn: 203335
2014-03-08 02:22:29 +00:00
Ted Kremenek
ff909f907c
[CFG] Record would-be successor for noreturn destructor.
...
llvm-svn: 203334
2014-03-08 02:22:25 +00:00
Ted Kremenek
04bfbeea04
[-Wunreachable-code] Handle 'return' with no argument dominated by 'noreturn' function.
...
llvm-svn: 203333
2014-03-08 02:22:23 +00:00
Benjamin Kramer
4cadf292a5
[C++11] Revert uses of lambdas with array_pod_sort.
...
Looks like GCC implements the lambda->function pointer conversion differently.
llvm-svn: 203293
2014-03-07 21:51:58 +00:00
Benjamin Kramer
15ae783e14
[C++11] Convert sort predicates into lambdas.
...
No functionality change.
llvm-svn: 203289
2014-03-07 21:35:40 +00:00
Ted Kremenek
94d1617a1f
[-Wunreachable-code] Treat constant globals as configuration values in unreachable code heuristics.
...
This one could possibly be refined even further; e.g. looking
at the initializer and see if it is truly a configuration value.
llvm-svn: 203283
2014-03-07 20:51:13 +00:00
Ahmed Charles
b89843299a
Replace OwningPtr with std::unique_ptr.
...
This compiles cleanly with lldb/lld/clang-tools-extra/llvm.
llvm-svn: 203279
2014-03-07 20:03:18 +00:00
Aaron Ballman
629afaefe0
[C++11] Replacing DeclBase iterators decls_begin() and decls_end() with iterator_range decls(). The same is true for the noload versions of these APIs. Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203278
2014-03-07 19:56:05 +00:00
Ahmed Charles
9a16beb8bc
Change OwningPtr::take() to OwningPtr::release().
...
This is a precursor to moving to std::unique_ptr.
llvm-svn: 203275
2014-03-07 19:33:25 +00:00