| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
double load and store instead.
llvm-svn: 66776
|
| |
|
|
| |
llvm-svn: 66775
|
| |
|
|
| |
llvm-svn: 66773
|
| |
|
|
|
|
| |
assembly text output uses an indirect call ("call *") instead of a direct call.
llvm-svn: 66735
|
| |
|
|
| |
llvm-svn: 66725
|
| |
|
|
|
|
| |
optimization too late and left the live intervals to be out of sync with instructions. This fixes 8b10b.
llvm-svn: 66715
|
| |
|
|
|
|
| |
clear some bits.
llvm-svn: 66684
|
| |
|
|
| |
llvm-svn: 66663
|
| |
|
|
|
|
| |
pshuflw/hw.
llvm-svn: 66645
|
| |
|
|
|
|
|
|
|
| |
alignment of the generated constant pool entry to the
desired alignment of a type. If we don't do this, we end up
trying to do movsd from 4-byte alignment memory. This fixes
450.soplex and 456.hmmer.
llvm-svn: 66641
|
| |
|
|
|
|
|
| |
1. Use the same value# to represent unknown values being merged into sub-registers.
2. When coalescer commute an instruction and the destination is a physical register, update its sub-registers by merging in the extended ranges.
llvm-svn: 66610
|
| |
|
|
| |
llvm-svn: 66581
|
| |
|
|
|
|
| |
/ Darwin.
llvm-svn: 66574
|
| |
|
|
| |
llvm-svn: 66547
|
| |
|
|
|
|
|
| |
Also fixed a punctuation error in the header comment.
This fixes PR3775.
llvm-svn: 66542
|
| |
|
|
|
|
|
|
| |
to obtain debug info about them.
Introduce helpers to access debug info for global variables. Also introduce a
helper that works for both local and global variables.
llvm-svn: 66541
|
| |
|
|
|
|
| |
correctness). Do so even if the callee has dynamic alloca and the caller doesn't.
llvm-svn: 66539
|
| |
|
|
| |
llvm-svn: 66534
|
| |
|
|
|
|
| |
format strings with the standard ${:foo} syntax.
llvm-svn: 66527
|
| |
|
|
|
|
| |
Darwin-specific; marked XFAIL for others.
llvm-svn: 66514
|
| |
|
|
| |
llvm-svn: 66490
|
| |
|
|
| |
llvm-svn: 66434
|
| |
|
|
|
|
| |
optimizer can create values of funky scalar types.
llvm-svn: 66429
|
| |
|
|
|
|
| |
the same instruction as kill. This fixes PR3706.
llvm-svn: 66428
|
| |
|
|
| |
llvm-svn: 66401
|
| |
|
|
|
|
| |
a vector type instead of into an integer type.
llvm-svn: 66368
|
| |
|
|
|
|
|
| |
memcpy/memmove'd into or out of. This fixes a serious
perf issue that Nate ran into.
llvm-svn: 66366
|
| |
|
|
|
|
| |
version accordingly.
llvm-svn: 66365
|
| |
|
|
| |
llvm-svn: 66363
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For 2009-03-07-FPConstSelect.ll we now produce:
_f:
xorl %eax, %eax
testl %edi, %edi
movl $4, %ecx
cmovne %rax, %rcx
leaq LCPI1_0(%rip), %rax
movss (%rcx,%rax), %xmm0
ret
previously we produced:
_f:
subl $4, %esp
cmpl $0, 8(%esp)
movss LCPI1_0, %xmm0
je LBB1_2 ## entry
LBB1_1: ## entry
movss LCPI1_1, %xmm0
LBB1_2: ## entry
movss %xmm0, (%esp)
flds (%esp)
addl $4, %esp
ret
on PPC the code also improves to:
_f:
cntlzw r2, r3
srwi r2, r2, 5
li r3, lo16(LCPI1_0)
slwi r2, r2, 2
addis r3, r3, ha16(LCPI1_0)
lfsx f1, r3, r2
blr
from:
_f:
li r2, lo16(LCPI1_1)
cmplwi cr0, r3, 0
addis r2, r2, ha16(LCPI1_1)
beq cr0, LBB1_2 ; entry
LBB1_1: ; entry
li r2, lo16(LCPI1_0)
addis r2, r2, ha16(LCPI1_0)
LBB1_2: ; entry
lfs f1, 0(r2)
blr
This also improves the existing pic-cpool case from:
foo:
subl $12, %esp
call .Lllvm$1.$piclabel
.Lllvm$1.$piclabel:
popl %eax
addl $_GLOBAL_OFFSET_TABLE_ + [.-.Lllvm$1.$piclabel], %eax
cmpl $0, 16(%esp)
movsd .LCPI1_0@GOTOFF(%eax), %xmm0
je .LBB1_2 # entry
.LBB1_1: # entry
movsd .LCPI1_1@GOTOFF(%eax), %xmm0
.LBB1_2: # entry
movsd %xmm0, (%esp)
fldl (%esp)
addl $12, %esp
ret
to:
foo:
call .Lllvm$1.$piclabel
.Lllvm$1.$piclabel:
popl %eax
addl $_GLOBAL_OFFSET_TABLE_ + [.-.Lllvm$1.$piclabel], %eax
xorl %ecx, %ecx
cmpl $0, 4(%esp)
movl $8, %edx
cmovne %ecx, %edx
fldl .LCPI1_0@GOTOFF(%eax,%edx)
ret
This triggers a few dozen times in spec FP 2000.
llvm-svn: 66358
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"boolify" pointers, generating really awful code because getting the pointer
value requires a load itself. Before:
_foo:
movb $1, _X.b
ret
_get:
xorl %ecx, %ecx
movb _X.b, %al
testb %al, %al
movl $_Y, %eax
cmove %ecx, %eax
ret
With the xform disabled:
_foo:
movl $_Y, _X
ret
_get:
movl _X, %eax
ret
llvm-svn: 66351
|
| |
|
|
|
|
|
|
|
|
|
| |
the same say the "test" instruction does in overflow cases,
so eliminating the test is only safe when those bits aren't
needed, as is the case for COND_E and COND_NE, or if it
can be proven that no overflow will occur. For now, just
restrict the optimization to COND_E and COND_NE and don't
do any overflow analysis.
llvm-svn: 66318
|
| |
|
|
| |
llvm-svn: 66278
|
| |
|
|
| |
llvm-svn: 66269
|
| |
|
|
| |
llvm-svn: 66268
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
to find a tiny mouse hole to squeeze through, it struck
me that globals without a name can be considered internal
since they can't be referenced from outside the current
module. This patch makes GlobalOpt give them internal
linkage. Also done for aliases even though they always
have names, since in my opinion anonymous aliases should
be allowed for consistency with global variables and
functions. So if that happens one day, this code is ready!
llvm-svn: 66267
|
| |
|
|
|
|
| |
debug info.
llvm-svn: 66262
|
| |
|
|
|
|
| |
intrinsics.
llvm-svn: 66255
|
| |
|
|
| |
llvm-svn: 66244
|
| |
|
|
|
|
|
|
|
|
|
| |
with multiple chain operands. This can occur when the scheduler
has added chain operands to a node that already has a chain
operand, in order to handle physical register dependencies.
This fixes an llvm-gcc bootstrap failure on x86-64 introduced
in r66058.
llvm-svn: 66240
|
| |
|
|
| |
llvm-svn: 66233
|
| |
|
|
|
|
| |
We are still not out of woods yet.
llvm-svn: 66232
|
| |
|
|
| |
llvm-svn: 66224
|
| |
|
|
|
|
|
| |
negative one, as subtracts of immediates are canonicalized
to adds.
llvm-svn: 66180
|
| |
|
|
|
|
| |
there should be no spilling of anything.
llvm-svn: 66179
|
| |
|
|
|
|
|
|
|
|
|
|
| |
If non constant local GV named A is used by a constant local GV named B (e.g. llvm.dbg.variable) and B is not used by anyone else then eliminate A as well as B.
In other words, debug info should not interfere in removal of unused GV.
--This life, and those below, will be ignored--
M test/Transforms/GlobalOpt/2009-03-03-dbg.ll
M lib/Transforms/IPO/GlobalOpt.cpp
llvm-svn: 66167
|
| |
|
|
| |
llvm-svn: 66140
|
| |
|
|
|
|
| |
block.
llvm-svn: 66119
|
| |
|
|
| |
llvm-svn: 66086
|
| |
|
|
| |
llvm-svn: 66083
|