| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove pre-standard restriction on explicitly-defaulted copy constructors with
'incorrect' parameter types, and instead just make those special members
non-trivial as the standard requires.
This required making CXXRecordDecl correctly handle classes which have both a
trivial and a non-trivial special member of the same kind.
This also fixes PR13217 by reimplementing DiagnoseNontrivial in terms of the
new triviality computation technology.
llvm-svn: 169667
|
| |
|
|
|
|
|
|
|
|
| |
directive as a macro expansion.
This is more of a "macro reference" than a macro expansion but it's close enough
for libclang's purposes. If it causes issues we can revisit and introduce a new
kind of cursor.
llvm-svn: 169666
|
| |
|
|
|
|
| |
a MacroInfo object if the identifier was a macro name.
llvm-svn: 169665
|
| |
|
|
| |
llvm-svn: 169664
|
| |
|
|
|
|
|
|
| |
properly, rather than faking it up by pretending that a reference member makes
the default constructor non-trivial. That leads to rejects-valids when putting
such types inside unions.
llvm-svn: 169662
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
following:
sizeof=132, dsize=132, align=4
nvsize=132, nvalign=4
Is not indented, so when classes are nested there is no way to know to
which class it belongs.
Fix this problem by indenting the size summary properly for each class.
llvm-svn: 169654
|
| |
|
|
|
|
| |
in the near future.
llvm-svn: 169652
|
| |
|
|
|
|
|
|
|
| |
with -Werror. Previously, compiling with -Werror would emit only the first
warning in a compilation unit, because clang assumes that once an error occurs,
further analysis is unlikely to return valid results. However, warnings that
have been upgraded to errors should not be treated as "errors" in this sense.
llvm-svn: 169649
|
| |
|
|
| |
llvm-svn: 169648
|
| |
|
|
|
|
|
|
|
| |
their USR should contain a location.
This uniques them from other declarations with the same name but in different translation units.
rdar://10546541
llvm-svn: 169647
|
| |
|
|
| |
llvm-svn: 169640
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
top level.
This heuristic is already turned on for non-ObjC methods
(inlining-mode=noredundancy). If a method has been previously analyzed,
while being inlined inside of another method, do not reanalyze it as top
level.
This commit applies it to ObjCMethods as well. The main caveat here is
that to catch the retain release errors, we are still going to reanalyze
all the ObjC methods but without inlining turned on.
Gives 21% performance increase on one heavy ObjC benchmark, which
suffered large performance regressions due to ObjC inlining.
llvm-svn: 169639
|
| |
|
|
|
|
|
|
|
|
| |
This an AST matcher tutorial based on Sam Panzer's document
(https://docs.google.com/a/google.com/document/d/1oTkVLhCdRJUEH1_LDaQdXqe8-aOqT5GLDL9e4MhoFF8/edit).
Checking in now although some parts might be a bit rough so others can
help improving it.
llvm-svn: 169632
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This is the case where the analyzer tries to print out source locations
for code within a synthesized function body, which of course does not have
a valid source location. The previous fix attempted to do this during
diagnostic path pruning, but some diagnostics have pruning disabled, and
so any diagnostic with a path that goes through a synthesized body will
either hit an assertion or emit invalid output.
<rdar://problem/12657843> (again)
llvm-svn: 169631
|
| |
|
|
|
|
|
| |
This reduces canonicalization of ImmutableMaps. This reduces analysis time
of one heavy Objective-C file by another 1%.
llvm-svn: 169630
|
| |
|
|
| |
llvm-svn: 169622
|
| |
|
|
| |
llvm-svn: 169611
|
| |
|
|
|
|
|
|
| |
i386-redhat-linux6E).
Thanks to Bruce Stephens.
llvm-svn: 169610
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: FormatTokenLexer is here, FormatTokenBuffer is on the way. This will allow to re-parse unwrapped lines when needed.
Reviewers: djasper, klimek
Reviewed By: klimek
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D186
llvm-svn: 169605
|
| |
|
|
|
|
| |
compatibility
llvm-svn: 169599
|
| |
|
|
|
|
|
| |
Now not joining keywords with '::' and not putting a space between
a pointer pointer.
llvm-svn: 169594
|
| |
|
|
|
|
|
|
|
| |
ObjCMethodCall::getRuntimeDefinition().
The same queries can happen thousands of times. This reduces the analysis
time on one heavy Objective-C file by 2.4%.
llvm-svn: 169589
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We were emitting calls to blocks as if all arguments were
required --- i.e. with signature (A,B,C,D,...) rather than
(A,B,...). This patch fixes that and accounts for the
implicit block-context argument as a required argument.
In addition, this patch changes the function type under which
we call unprototyped functions on platforms like x86-64 that
guarantee compatibility of variadic functions with unprototyped
function types; previously we would always call such functions
under the LLVM type T (...)*, but now we will call them under
the type T (A,B,C,D,...)*. This last change should have no
material effect except for making the type conventions more
explicit; it was a side-effect of the most convenient implementation.
llvm-svn: 169588
|
| |
|
|
|
|
| |
triple.
llvm-svn: 169587
|
| |
|
|
|
|
| |
avoiding over-eager canonicalization of clusters.
llvm-svn: 169586
|
| |
|
|
| |
llvm-svn: 169581
|
| |
|
|
| |
llvm-svn: 169576
|
| |
|
|
|
|
| |
defaulted.
llvm-svn: 169574
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
bindings.
This reduces analysis time by 1.2% on one test case (Objective-C), but
also cleans up some of the code conceptually as well. We can possible
just make RegionBindingsRef -> RegionBindings, but I wanted to stage
things.
After this, we should revisit Jordan's optimization of not canonicalizing
the immutable AVL trees for the cluster bindings as well.
llvm-svn: 169571
|
| |
|
|
|
|
|
|
|
| |
Thanks for reminding me about copy-elision, David. Passing references here
doesn't help when we could get move construction in C++11. If we really
cared, we'd use std::swap to steal the reference from the temporary arg,
but it's probably not /that/ critical outside of Profile anyway.
llvm-svn: 169570
|
| |
|
|
| |
llvm-svn: 169566
|
| |
|
|
|
|
|
|
|
|
| |
Suggested by David Blaikie. ExplodedNode, CallEvent, and CheckerContext all
hang onto their ProgramState, so the accessors can return a reference to the
internal state rather than preemptively copying it. This helps avoid
temporary ProgramStateRefs, though local variables will still (correctly)
do an extra retain and release.
llvm-svn: 169563
|
| |
|
|
|
|
| |
and will break the build on buildbot.
llvm-svn: 169562
|
| |
|
|
|
|
| |
once" headers.
llvm-svn: 169558
|
| |
|
|
|
|
|
|
|
| |
* Look for i686-linux-android under <sysroot>/lib/gcc.
* This patch also slightly enhance the test suite for
Android GCC toolchain detection.
llvm-svn: 169557
|
| |
|
|
| |
llvm-svn: 169555
|
| |
|
|
| |
llvm-svn: 169554
|
| |
|
|
| |
llvm-svn: 169548
|
| |
|
|
| |
llvm-svn: 169544
|
| |
|
|
| |
llvm-svn: 169543
|
| |
|
|
|
|
|
|
| |
actually necessary.
This just empties out the diag, which is fine.
llvm-svn: 169542
|
| |
|
|
| |
llvm-svn: 169540
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that were already parsed in the same "indexing session".
An indexing session is defined as using the same CXIndexAction object
for multiple clang_indexSourceFile calls.
Passing CXIndexOpt_SkipParsedBodiesInSession as an indexing option will
enable the mode where we try to skip bodies that were already parsed in
another translation unit.
If a function's body was skipped, the "flags" field in the CXIdxDeclInfo
structure will have "CXIdxDeclFlag_Skipped" bit was set.
llvm-svn: 169539
|
| |
|
|
|
|
|
|
| |
RegionStore."
Jordan and I discussed this, and we are going to do this another way.
llvm-svn: 169538
|
| |
|
|
| |
llvm-svn: 169535
|
| |
|
|
| |
llvm-svn: 169533
|
| |
|
|
|
|
| |
that was skipped by the parser.
llvm-svn: 169531
|
| |
|
|
| |
llvm-svn: 169530
|
| |
|
|
|
|
|
| |
'currStmt', 'CleanedState', and 'EntryNode' were being set, but only ever
used locally.
llvm-svn: 169529
|
| |
|
|
| |
llvm-svn: 169528
|