| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 130489
|
| |
|
|
|
|
| |
Fixes PR9809.
llvm-svn: 130485
|
| |
|
|
| |
llvm-svn: 130450
|
| |
|
|
|
|
|
| |
This shouldn't happen in practice because the icmp would be a constant.
Add a check so we don't miscompile code if something goes wrong.
llvm-svn: 130446
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
between two reads (threading).
Fix an off-by-one in the indirect counter table that I meant to revert after an
earlier experiment. Whoops!
Implement GCOV_PREFIX. Doesn't handle GCOV_PREFIX_STRIP yet.
Fix an off-by-one in string emission. Extra whoops!
Tolerate DISubprograms that have null Function*'s attached to them. I don't yet
understand what this means, but it happens when you have a global static with
a non-trivial constructor/destructor.
Fix a crash on switch statements with a single successor (default-only).
llvm-svn: 130443
|
| |
|
|
| |
llvm-svn: 130431
|
| |
|
|
| |
llvm-svn: 130428
|
| |
|
|
| |
llvm-svn: 130426
|
| |
|
|
| |
llvm-svn: 130419
|
| |
|
|
|
|
|
|
|
|
|
|
| |
a nice and tidy:
%x1 = load i32* %0, align 4
%1 = icmp eq i32 %x1, 1179403647
br i1 %1, label %if.then, label %if.end
instead of doing lots of loads and branches. May the FreeBSD bootloader
long fit in its allocated space.
llvm-svn: 130416
|
| |
|
|
| |
llvm-svn: 130414
|
| |
|
|
| |
llvm-svn: 130408
|
| |
|
|
|
|
| |
This happens when GVN widens loads. Part of PR6627.
llvm-svn: 130405
|
| |
|
|
|
|
| |
static functions instead of passing around tons of random ivars.
llvm-svn: 130403
|
| |
|
|
| |
llvm-svn: 130401
|
| |
|
|
|
|
|
|
|
|
|
| |
wider load would allow elimination of subsequent loads, and when the wider
load is still a native integer type. This eliminates a ton of loads on
various benchmarks involving struct fields, though it is somewhat hobbled
by clang not being very aggressive about field alignment.
This is yet another step along the way towards resolving PR6627.
llvm-svn: 130390
|
| |
|
|
|
|
| |
stage2 compiler error.
llvm-svn: 130350
|
| |
|
|
|
|
|
|
|
| |
Modified LinearFunctionTestReplace to push the condition on the dead
list instead of eagerly deleting it. This can cause unnecessary
IV rewrites, which should have no effect on codegen and will not be an
issue once we stop generating canonical IVs.
llvm-svn: 130340
|
| |
|
|
|
|
| |
Assign DebugLoc to this new trap instruction.
llvm-svn: 130315
|
| |
|
|
|
|
|
|
|
|
| |
effective in avoiding recomputation of LCSSA form; the widespread
use of instsimplify (which looks through phi nodes) means it was
not preserving LCSSA form anyway; and instcombine is no longer
scheduled in the middle of the loop passes so this doesn't matter
anymore.
llvm-svn: 130301
|
| |
|
|
|
|
|
|
|
|
| |
when X has multiple uses. This is useful for exposing secondary optimizations,
but the X86 backend isn't ready for this when X has a single use. For example,
this can disable load folding.
This is inching towards resolving PR6627.
llvm-svn: 130238
|
| |
|
|
| |
llvm-svn: 130237
|
| |
|
|
|
|
|
| |
translation fails. We were bailing out in some cases that would
cause us to miss GVN'ing some non-local cases away.
llvm-svn: 130206
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add support for switch and indirectbr edges. This works by densely numbering
all blocks which have such terminators, and then separately numbering the
possible successors. The predecessors write down a number, the successor knows
its own number (as a ConstantInt) and sends that and the pointer to the number
the predecessor wrote down to the runtime, who looks up the counter in a
per-function table.
Coverage data should now be functional, but I haven't tested it on anything
other than my 2-file synthetic test program for coverage.
llvm-svn: 130186
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
return it as a clobber. This allows GVN to do smart things.
Enhance GVN to be smart about the case when a small load is clobbered
by a larger overlapping load. In this case, forward the value. This
allows us to compile stuff like this:
int test(void *P) {
int tmp = *(unsigned int*)P;
return tmp+*((unsigned char*)P+1);
}
into:
_test: ## @test
movl (%rdi), %ecx
movzbl %ch, %eax
addl %ecx, %eax
ret
which has one load. We already handled the case where the smaller
load was from a must-aliased base pointer.
llvm-svn: 130180
|
| |
|
|
| |
llvm-svn: 130068
|
| |
|
|
| |
llvm-svn: 129932
|
| |
|
|
|
|
|
| |
necessary since gcov counts transitions between blocks. It can't see if you've
run every line in a straight-line function, so we add an edge for it to notice.
llvm-svn: 129905
|
| |
|
|
|
|
| |
comment for 80 columns.
llvm-svn: 129904
|
| |
|
|
|
|
|
| |
instrument the program to emit .gcda.
TODO: we should emit slightly different .gcda files when .gcno emission is off.
llvm-svn: 129903
|
| |
|
|
|
|
|
| |
generated by llvm-gcc, since llvm-gcc uses 2 i64s for passing a 4 x float
vector on ARM rather than an i64 array like Clang.
llvm-svn: 129878
|
| |
|
|
|
|
| |
delete it.
llvm-svn: 129877
|
| |
|
|
|
|
| |
more cases.
llvm-svn: 129876
|
| |
|
|
| |
llvm-svn: 129759
|
| |
|
|
|
|
| |
silences Clang's -Wunused-function when building in release mode.
llvm-svn: 129709
|
| |
|
|
| |
llvm-svn: 129644
|
| |
|
|
|
|
| |
found by code inspection.
llvm-svn: 129641
|
| |
|
|
| |
llvm-svn: 129632
|
| |
|
|
|
|
|
|
|
|
| |
Break the arc-profile code out to a function like the notes emission code is,
and reorder the functions in the file.
The only functionality change is that we no longer modify the Module when the
Module has no debug info to use.
llvm-svn: 129631
|
| |
|
|
|
|
|
| |
does. Also mostly implement it. Still a work-in-progress, but generates legal
output on crafted test cases.
llvm-svn: 129630
|
| |
|
|
|
|
| |
Luis Felipe Strano Moraes!
llvm-svn: 129558
|
| |
|
|
|
|
|
| |
canonical, and generally leads to better code. Found while looking at
an article about saturating arithmetic.
llvm-svn: 129545
|
| |
|
|
|
|
|
|
|
|
| |
repeatedly undo each other. The solution is to perform more aggressive constant folding to make one of the edges just folded away rather than trying to thread it.
Fixes <rdar://problem/9284786>.
Discovered with CSmith.
llvm-svn: 129538
|
| |
|
|
| |
llvm-svn: 129532
|
| |
|
|
| |
llvm-svn: 129509
|
| |
|
|
|
|
|
|
|
|
|
|
| |
instruction around, reducing work.
Greatly simplify handling of debug instructions. There is no need to
build up a vector of them and then move them into the one predecessor
if we're processing a block. Instead just rescan the block and *copy*
them into the pred. If a block gets merged into multiple preds, this
will retain more debug info.
llvm-svn: 129502
|
| |
|
|
| |
llvm-svn: 129501
|
| |
|
|
|
|
|
|
| |
the same allocation size but different primitive sizes(e.g., <3xi32> and
<4xi32>). When ScalarRepl promotes them, it can't use a bit cast but
should use a shuffle vector instead.
llvm-svn: 129472
|
| |
|
|
| |
llvm-svn: 129450
|
| |
|
|
|
|
|
|
|
| |
LoopUnroll class's ctor. Doing so
will allow multiple context with different loop unroll parameters to run. This is a minor change and no effect
on existing application.
llvm-svn: 129449
|