| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 152433
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When an error made a record member invalid, the record would stay as "isBeingDefined" and
not "completeDefinition". Even easily recoverable errors ended up propagating records in
such "beingDefined" state, for example:
struct A {
~A() const; // expected-error {{'const' qualifier is not allowed on a destructor}}
};
struct B : A {}; // A & B would stay as "not complete definition" and "being defined".
This weird state was impending lookups in the records and hitting assertion in the ASTWriter.
Part of rdar://11007039
llvm-svn: 152432
|
| |
|
|
| |
llvm-svn: 152431
|
| |
|
|
| |
llvm-svn: 152430
|
| |
|
|
| |
llvm-svn: 152429
|
| |
|
|
|
|
| |
LLVM_READONLY.
llvm-svn: 152428
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- The theory here is that we have these functions sprinkled in all over the
place. This should allow the optimizer to at least realize it can still do
load CSE across these calls.
- I blindly marked all instances as such, even though the optimizer can infer
this attribute in some instances (some of the inline ones) as that was easier
and also, when given the choice between thinking and not thinking, I prefer
the latter.
You might think this is mere frivolity, but actually this is good for a .7 -
1.1% speedup on 403.gcc/combine.c, JSC/Interpreter.cpp,
OGF/NSBezierPath-OAExtensions.m.
llvm-svn: 152426
|
| |
|
|
| |
llvm-svn: 152424
|
| |
|
|
|
|
|
| |
to forward class, and assigning to an 'id' type var, message
sends default to 'id'. // rdar"//10988847
llvm-svn: 152420
|
| |
|
|
|
|
|
|
|
| |
- getSourceRange().getBegin() is about as awesome a pattern as .copy().size().
I already killed the hot paths so this doesn't seem to impact performance on my
tests-of-the-day, but it is a much more sensible (and shorter) pattern.
llvm-svn: 152419
|
| |
|
|
|
|
| |
{CXXBaseSpecifier,Declarator,DeclSpec,TypeLoc,UnqualifiedId}::getLoc{Start,End}.
llvm-svn: 152418
|
| |
|
|
|
|
|
| |
- This cuts the # of getSourceRange calls by 60% on
OGF/NSBezierPath-OAExtensions.m.
llvm-svn: 152412
|
| |
|
|
|
|
|
|
| |
- getSourceRange() can be very expensive, we should try to avoid it if at all possible.
In conjunction with the previous commit I measured a ~2% speedup on 403.gcc/combine.c and a 3% speedup on OmniGroupFrameworks/NSBezierPath-OAExtensions.m.
llvm-svn: 152411
|
| |
|
|
|
|
|
|
| |
methods.
- There are probably a lot more of these worth adding, but these are a start at hitting some of the exprs for which getSourceRange().getBegin() is a poor substitute for getLocStart().
llvm-svn: 152410
|
| |
|
|
| |
llvm-svn: 152409
|
| |
|
|
|
|
| |
more obvious.
llvm-svn: 152408
|
| |
|
|
|
|
| |
long).
llvm-svn: 152404
|
| |
|
|
|
|
|
|
|
| |
This renames the -Wformat-non-standard flag to -Wformat-non-iso,
rewords the current warnings a bit (pointing out that a format string
is not supported by ISO C rather than being "non standard"),
and adds a warning about positional arguments.
llvm-svn: 152403
|
| |
|
|
| |
llvm-svn: 152401
|
| |
|
|
| |
llvm-svn: 152396
|
| |
|
|
| |
llvm-svn: 152395
|
| |
|
|
| |
llvm-svn: 152394
|
| |
|
|
|
|
| |
and lots of tidying up.
llvm-svn: 152392
|
| |
|
|
| |
llvm-svn: 152378
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- On -emit-llvm-only of 403.gcc/combine.c, for example, we make 160k calls to
getTypeInfo but only ever deal with 680 some distinct types.
I saw these speedups (user time):
403.gcc/combine.c -- 3.1%
OmniGroupFrameworks/NSBezierPath-OAExtensions.m -- 3.6%
JavaScriptCore/Interpreter.cpp -- 1.4%
which seems pretty sweet.
I ran some histograms on those compiles and we end up doing a ton of
getTypeInfo() on 'char' and 'int'. I tried splitting out a fast path for builtin
types, but this wasn't a win. Still kinda seems like we could be doing better
here.
llvm-svn: 152377
|
| |
|
|
|
|
|
| |
type-analysis; otherwise, we just completely do the
wrong thing for placeholders.
llvm-svn: 152375
|
| |
|
|
|
|
| |
rebuild a global because of the initializer. <rdar://problem/10957867>.
llvm-svn: 152372
|
| |
|
|
|
|
| |
correctly. Part of <rdar://problem/10957867>.
llvm-svn: 152370
|
| |
|
|
| |
llvm-svn: 152365
|
| |
|
|
| |
llvm-svn: 152364
|
| |
|
|
|
|
|
| |
- This function is not at all free; pass it around along some hot paths instead
of recomputing it deep inside various VarDecl methods.
llvm-svn: 152363
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
symbols and regions.
Essentially, a bug centers around a story for various symbols and regions. We should only include
the path diagnostic events that relate to those symbols and regions.
The pruning is done by associating a set of interesting symbols and regions with a BugReporter, which
can be modified at BugReport creation or by BugReporterVisitors.
This patch reduces the diagnostics emitted in several of our test cases. I've vetted these as
having desired behavior. The only regression is a missing null check diagnostic for the return
value of realloc() in test/Analysis/malloc-plist.c. This will require some investigation to fix,
and I have added a FIXME to the test case.
llvm-svn: 152361
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
analyzed.
The CallGraph is used when inlining is on, which is the current default.
This alone does not bring any performance improvement. It's a
stepping stone for the upcoming optimization in which we do not
re-analyze a function that has already been analyzed while inlined in
other functions. Using the call graph makes it easier to play with
the order of functions to minimize redundant analyzes.
llvm-svn: 152352
|
| |
|
|
|
|
|
|
|
| |
- Remove -analyzer-inline-call.
- Add -analyzer-ipa=[none|inlining]
- Add -analyzer-inlining-mode to allow experimentation for
different performance tuning methods.
llvm-svn: 152351
|
| |
|
|
| |
llvm-svn: 152350
|
| |
|
|
| |
llvm-svn: 152349
|
| |
|
|
|
|
|
|
|
|
|
|
| |
for a few kinds of error. Specifically:
Since we're after translation phase 6, the "" token might be formed by multiple
source-level string literals. Checking the token width is not a correct way of
detecting empty string literals, due to escaped newlines. Diagnose and recover
from a missing space between "" and suffix, and from string literals other than
"", which are followed by a suffix.
llvm-svn: 152348
|
| |
|
|
|
|
| |
introduces cleanups anyway.
llvm-svn: 152345
|
| |
|
|
|
|
|
| |
first codepoint! Also, don't reject empty raw string literals for spurious
"encoding" issues. Also, don't rely on undefined behavior in ConvertUTF.c.
llvm-svn: 152344
|
| |
|
|
|
|
| |
CXXTemporaryObjectExprs, not just CXXConstructExprs, which have a worrying tendency to vanish. Fixes PR12167.
llvm-svn: 152340
|
| |
|
|
| |
llvm-svn: 152339
|
| |
|
|
|
|
| |
without reverting the changes.
llvm-svn: 152333
|
| |
|
|
| |
llvm-svn: 152332
|
| |
|
|
| |
llvm-svn: 152331
|
| |
|
|
|
|
|
| |
- This change seems to be a tiny loss on 403.gcc/combine.c (.2%), but I think
it is the right thing to do.
llvm-svn: 152330
|
| |
|
|
|
|
| |
"the script will run forever continually picking new tests to run", make it so.
llvm-svn: 152327
|
| |
|
|
| |
llvm-svn: 152324
|
| |
|
|
|
|
|
| |
hot path will typically profitably get inlined (based on what I see from the
users of PartialDiagnostic).
llvm-svn: 152322
|
| |
|
|
|
|
| |
incredibly common) path.
llvm-svn: 152321
|
| |
|
|
|
|
| |
HandleCXXStaticMemberVarInstantiation. Suggested by Argyrios.
llvm-svn: 152320
|