| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 131444
|
| |
|
|
| |
llvm-svn: 131439
|
| |
|
|
| |
llvm-svn: 131438
|
| |
|
|
|
|
|
|
|
|
|
|
| |
When instructions are deleted, they leave tombstone SlotIndex entries.
The isZeroLength method should ignore these null indexes.
This causes RABasic to sometimes spill a callee-saved register in the
abi-isel.ll test, so don't run that test with -regalloc=basic. Prioritizing
register allocation according to spill weight can cause more registers to be
used.
llvm-svn: 131436
|
| |
|
|
| |
llvm-svn: 131424
|
| |
|
|
| |
llvm-svn: 131420
|
| |
|
|
|
|
| |
clang generates for cases like this, but it should become more useful soon.
llvm-svn: 131417
|
| |
|
|
| |
llvm-svn: 131330
|
| |
|
|
|
|
| |
test bug and also taught it to update liveins.
llvm-svn: 131241
|
| |
|
|
|
|
| |
DW_LNS_set_prologue_end line table opcode.
llvm-svn: 131194
|
| |
|
|
|
|
|
|
| |
If there is a store after the load node, then there is a chain, which means
that there is another user. Thus, asking hasOneUser would fail. Instead we
ask hasNUsesOfValue on the 'data' value.
llvm-svn: 131183
|
| |
|
|
|
|
| |
splat vector.
llvm-svn: 131179
|
| |
|
|
|
|
| |
to provide a reduced testcase.
llvm-svn: 131176
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
at the start of basic blocks to their common predecessor. It's actually quite
common (e.g. about 50 times in JM/lencod) and has shown to be a nice code size
benefit. e.g.
pushq %rax
testl %edi, %edi
jne LBB0_2
## BB#1:
xorb %al, %al
popq %rdx
ret
LBB0_2:
xorb %al, %al
callq _foo
popq %rdx
ret
=>
pushq %rax
xorb %al, %al
testl %edi, %edi
je LBB0_2
## BB#1:
callq _foo
LBB0_2:
popq %rdx
ret
rdar://9145558
llvm-svn: 131172
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"b + ((a < b) ? 1 : 0)" compiles into
cmpl %esi, %edi
adcl $0, %esi
instead of
cmpl %esi, %edi
sbbl %eax, %eax
andl $1, %eax
addl %esi, %eax
This saves a register, a false dependency on %eax
(Intel's CPUs still don't ignore it) and it's shorter.
llvm-svn: 131070
|
| |
|
|
|
|
|
| |
This can't be just an assertion, users can always write impossible inline
assembly. Such an assembly statement should be included in the error message.
llvm-svn: 131024
|
| |
|
|
|
|
| |
possibly related to cbnz formation.
llvm-svn: 130977
|
| |
|
|
|
|
|
| |
I tested both gdb on a bootstrapped clang and and the gdb testsuite on OS X (snow leopard)
and both are happy using __eh_frame.
llvm-svn: 130937
|
| |
|
|
|
|
| |
this can make MachineCSE more effective in some cases (especially in small functions). PR8361 / part of rdar://problem/8259436 .
llvm-svn: 130928
|
| |
|
|
| |
llvm-svn: 130893
|
| |
|
|
|
|
|
|
| |
Most of these tests require a single mov instruction that can come either before
or after a 2-addr instruction. -join-physregs changes the behavior, but the
results are equivalent.
llvm-svn: 130891
|
| |
|
|
|
|
|
|
|
|
| |
edge in some cases.
Original message:
Teach MachineCSE how to do simple cross-block CSE involving physregs. This allows, for example, eliminating duplicate cmpl's on x86. Part of rdar://problem/8259436 .
llvm-svn: 130877
|
| |
|
|
| |
llvm-svn: 130867
|
| |
|
|
|
|
| |
allows, for example, eliminating duplicate cmpl's on x86. Part of rdar://problem/8259436 .
llvm-svn: 130862
|
| |
|
|
| |
llvm-svn: 130818
|
| |
|
|
|
|
| |
<rdar://problem/8460511>
llvm-svn: 130791
|
| |
|
|
| |
llvm-svn: 130658
|
| |
|
|
|
|
| |
-fno-dwarf2-cfi-asm. Implement the same behavior.
llvm-svn: 130637
|
| |
|
|
|
|
| |
less agressive about disabling cfi on linux :-(
llvm-svn: 130626
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently the output should be almost identical to the one produced by CodeGen
to make the transition easier.
The only two differences I know of are:
* Some files get an extra advance loc of size 0. This will be fixed when
relaxations are enabled.
* The optimization of declaring an EH symbol as an external variable is not
implemented. This is a subset of adding the nounwind attribute, so we if really
this at -O0 we should probably do it at the IL level.
llvm-svn: 130623
|
| |
|
|
| |
llvm-svn: 130599
|
| |
|
|
| |
llvm-svn: 130567
|
| |
|
|
|
|
| |
emmits: .cfi_personality, .cfi_lsda and the moves.
llvm-svn: 130503
|
| |
|
|
|
|
| |
rdar://problem/9303592 .
llvm-svn: 130429
|
| |
|
|
| |
llvm-svn: 130418
|
| |
|
|
| |
llvm-svn: 130412
|
| |
|
|
|
|
|
| |
This fixes clang generated blocks' variables' debug info.
Radar 9279956.
llvm-svn: 130373
|
| |
|
|
| |
llvm-svn: 130360
|
| |
|
|
|
|
| |
rdar://problem/9303592 .
llvm-svn: 130348
|
| |
|
|
|
|
| |
common. rdar://problem/9303592 .
llvm-svn: 130338
|
| |
|
|
|
|
| |
rdar://problem/9303306 .
llvm-svn: 130272
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 130226
|
| |
|
|
| |
llvm-svn: 130205
|
| |
|
|
| |
llvm-svn: 130198
|
| |
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 130039
|
| |
|
|
|
|
|
|
|
|
|
| |
fix bugs exposed by the gcc dejagnu testsuite:
1. The load may actually be used by a dead instruction, which
would cause an assert.
2. The load may not be used by the current chain of instructions,
and we could move it past a side-effecting instruction. Change
how we process uses to define the problem away.
llvm-svn: 130018
|
| |
|
|
|
|
|
|
|
|
|
|
| |
On x86 this allows to fold a load into the cmp, greatly reducing register pressure.
movzbl (%rdi), %eax
cmpl $47, %eax
->
cmpb $47, (%rdi)
This shaves 8k off gcc.o on i386. I'll leave applying the patch in README.txt to Chris :)
llvm-svn: 130005
|