| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
Fix a rather obscure crash caused by ARM fast-isel generating code which redefines a register.
rdar://problem/9338332 .
llvm-svn: 130539
|
|
|
|
|
|
| |
for bools, but is a start.
llvm-svn: 130534
|
|
|
|
| |
llvm-svn: 130528
|
|
|
|
| |
llvm-svn: 130527
|
|
|
|
|
|
| |
phi node folding
llvm-svn: 130526
|
|
|
|
|
|
| |
currently used, because variables don't get reported as being "defined".
llvm-svn: 130524
|
|
|
|
|
|
| |
sections based on FindAssociatedSection().
llvm-svn: 130523
|
|
|
|
|
|
| |
emmits: .cfi_personality, .cfi_lsda and the moves.
llvm-svn: 130503
|
|
|
|
|
|
| |
Generalization of Nate Begeman's patch!
llvm-svn: 130502
|
|
|
|
| |
llvm-svn: 130498
|
|
|
|
|
|
| |
Fixes PR9809.
llvm-svn: 130485
|
|
|
|
| |
llvm-svn: 130462
|
|
|
|
| |
llvm-svn: 130455
|
|
|
|
|
|
|
|
| |
redefines a register.
rdar://problem/9338332 .
llvm-svn: 130454
|
|
|
|
|
|
| |
rdar://problem/9303592 .
llvm-svn: 130429
|
|
|
|
| |
llvm-svn: 130418
|
|
|
|
|
|
|
|
|
|
|
|
| |
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: 130412
|
|
|
|
|
|
| |
This happens when GVN widens loads. Part of PR6627.
llvm-svn: 130405
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
This fixes clang generated blocks' variables' debug info.
Radar 9279956.
llvm-svn: 130373
|
|
|
|
| |
llvm-svn: 130360
|
|
|
|
|
|
|
|
|
| |
- selection of bitwise preds (AND, OR, XOR)
- new bitwise.ll test
Patch by Dan Bailey
llvm-svn: 130353
|
|
|
|
|
|
| |
rdar://problem/9303592 .
llvm-svn: 130348
|
|
|
|
| |
llvm-svn: 130345
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
common. rdar://problem/9303592 .
llvm-svn: 130338
|
|
|
|
| |
llvm-svn: 130327
|
|
|
|
|
|
|
|
|
|
| |
successors) and use inverse depth first search to traverse the BBs. However
that doesn't work when the CFG has infinite loops. Simply do a linear
traversal of all BBs work just fine.
rdar://9344645
llvm-svn: 130324
|
|
|
|
|
|
|
|
|
| |
only check arguments with pointer types. Update the documentation
of IntrReadArgMem reflect this.
While here, add support for TBAA tags on intrinsic calls.
llvm-svn: 130317
|
|
|
|
|
|
| |
Assign DebugLoc to this new trap instruction.
llvm-svn: 130315
|
|
|
|
|
|
|
| |
We cannot rely on the <imp-def> operands added by LiveIntervals in all cases as
demonstrated by the test case.
llvm-svn: 130313
|
|
|
|
| |
llvm-svn: 130294
|
|
|
|
|
|
| |
rdar://problem/9303306 .
llvm-svn: 130272
|
|
|
|
|
|
| |
work-in-progress that is not progressing, and it has issues.
llvm-svn: 130247
|
|
|
|
|
|
|
|
|
|
|
|
| |
more callee-saved registers and introduce copies. Only allows it if scheduling
a node above calls would end up lessen register pressure.
Call operands also has added ABI restrictions for register allocation, so be
extra careful with hoisting them above calls.
rdar://9329627
llvm-svn: 130245
|
|
|
|
|
|
| |
allocation so it's being removed.
llvm-svn: 130243
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Only run the early (in the module pass pipe) instcombine/simplifycfg
if the "unit at a time" passes they are cleaning up after runs.
2. Move the "clean up after the unroller" pass to the very end of the
function-level pass pipeline. Loop unroll uses instsimplify now,
so it doesn't create a ton of trash. Moving instcombine later allows
it to clean up after opportunities are exposed by GVN, DSE, etc.
3. Introduce some phase ordering tests for things that are specifically
intended to be simplified by the full optimizer as a whole.
This resolves PR2338, and is progress towards PR6627, which will be
generating code that looks similar to test2.
llvm-svn: 130241
|
|
|
|
|
|
|
|
|
|
| |
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: 130226
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 130205
|
|
|
|
| |
llvm-svn: 130198
|
|
|
|
|
|
|
|
|
|
|
| |
symbols. For example, don't emit:
.comm _i,4,2 ## @i
## @i
instead emit:
.comm _i,4,2 ## @i
llvm-svn: 130192
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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: 130165
|
|
|
|
| |
llvm-svn: 130131
|
|
|
|
|
|
| |
incoming argument. However, It is appropriate to emit DBG_VALUE referring to this incoming argument in entry block in MachineFunction.
llvm-svn: 130129
|
|
|
|
|
|
| |
lit needs a linter ...
llvm-svn: 130126
|
|
|
|
|
|
|
| |
these was just one line of a file. Explicitly set the eol-style property on the
files to try and ensure this fix stays.
llvm-svn: 130125
|