| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 57007
|
|
|
|
|
|
| |
isReg, etc., from isRegister, etc.
llvm-svn: 57006
|
|
|
|
| |
llvm-svn: 57005
|
|
|
|
|
|
|
|
|
| |
than the type an i1 is promoted to (eg: i8). Account
for this. Noticed by Tilmann Scheller on CellSPU; he
will hopefully take care of fixing this in LegalizeDAG
and adding a testcase!
llvm-svn: 56997
|
|
|
|
|
|
| |
Why? Because it was there!
llvm-svn: 56996
|
|
|
|
|
|
| |
the lock when calling a method which may materialize the llvm::Function.
llvm-svn: 56995
|
|
|
|
| |
llvm-svn: 56994
|
|
|
|
|
|
|
| |
It turns out that this is a fairly common operation,
and it's easy enough to handle.
llvm-svn: 56990
|
|
|
|
|
|
|
| |
getting inserted into the ValueMap. This avoids infinite
recursion in some rare cases.
llvm-svn: 56989
|
|
|
|
|
|
|
|
|
|
|
| |
sequences like this:
sete %al
testb %al, %al
jne LBB11_1
with this:
je LBB11_1
llvm-svn: 56969
|
|
|
|
|
|
|
| |
can be used when deciding if a block can transfer control to another
via a fall-through instead of a branch.
llvm-svn: 56968
|
|
|
|
| |
llvm-svn: 56965
|
|
|
|
|
|
|
|
|
|
| |
so we don't lose copies when two of them have
the same source. I don't know what I was thinking when I wrote this originally.
Note: There's probably a more efficient way to do this, but I need to think about it some more, and about what determinism
guarantees need to be present.
llvm-svn: 56964
|
|
|
|
| |
llvm-svn: 56963
|
|
|
|
| |
llvm-svn: 56960
|
|
|
|
|
|
| |
Contributed by Lang Hames.
llvm-svn: 56959
|
|
|
|
| |
llvm-svn: 56957
|
|
|
|
|
|
| |
volatile memory references are safe to move.
llvm-svn: 56948
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
local register allocator's physreg liveness doesn't recognize subregs,
so it doesn't know that defs of %ecx that are immediately followed by
uses of %cl aren't dead. This comes up due to the way fast-isel emits
shift instructions.
This is a temporary workaround. Arguably, local regalloc should
handle subreg references correctly. On the other hand, perhaps
fast-isel should use INSERT_SUBREG instead of just assigning to the
most convenient super-register of %cl when lowering shifts.
This fixes MultiSource/Benchmarks/MallocBench/espresso,
MultiSource/Applications/hexxagon, and others, under -fast.
llvm-svn: 56947
|
|
|
|
|
|
|
|
|
|
| |
a constant vector ("{0x123, 0x456}" syntax). The fix is to simplify the
_mm_srli_si128 macro, and move the "* 8" from the macro into the compiler
back-end. I can't change the existing __builtins because so many people are
using them :-(."
Patch by Stuart Hastings!
llvm-svn: 56944
|
|
|
|
|
|
|
| |
& version as strings.
- Win32 code is untested.
llvm-svn: 56942
|
|
|
|
| |
llvm-svn: 56939
|
|
|
|
| |
llvm-svn: 56937
|
|
|
|
| |
llvm-svn: 56930
|
|
|
|
|
|
| |
patch provided by Tomas Lindquist Olsen!
llvm-svn: 56929
|
|
|
|
| |
llvm-svn: 56927
|
|
|
|
|
|
|
|
|
|
|
| |
This allows the 64-bit forms to use+def RSP instead of ESP. This
doesn't fix any real bugs today, but it is more precise and it
makes the debug dumps on x86-64 look more consistent.
Also, add some comments describing the CALL instructions' physreg
operand uses and defs.
llvm-svn: 56925
|
|
|
|
| |
llvm-svn: 56924
|
|
|
|
|
|
|
|
|
|
|
| |
pointer bitcasts and GEP's", and centralize the
logic in Value::getUnderlyingObject. The
difference with stripPointerCasts is that
stripPointerCasts only strips GEPs if all
indices are zero, while getUnderlyingObject
strips GEPs no matter what the indices are.
llvm-svn: 56922
|
|
|
|
|
|
| |
immediately.
llvm-svn: 56921
|
|
|
|
| |
llvm-svn: 56920
|
|
|
|
| |
llvm-svn: 56919
|
|
|
|
| |
llvm-svn: 56917
|
|
|
|
| |
llvm-svn: 56911
|
|
|
|
|
|
| |
instruction, not after. This fixes some uses of free'd memory.
llvm-svn: 56908
|
|
|
|
| |
llvm-svn: 56900
|
|
|
|
| |
llvm-svn: 56893
|
|
|
|
|
|
| |
amount of time to track down.
llvm-svn: 56889
|
|
|
|
| |
llvm-svn: 56888
|
|
|
|
| |
llvm-svn: 56887
|
|
|
|
|
|
| |
- Testcase for r56885.
llvm-svn: 56886
|
|
|
|
|
|
|
|
|
| |
`-fno-builtin' flag. Currently, it's used to replace "memset" with "_bzero"
instead of "__bzero" on Darwin10+. This arguably violates the meaning of this
flag, but is currently sufficient. The meaning of this flag should become more
specific over time.
llvm-svn: 56885
|
|
|
|
|
|
| |
they'll be a little more visible. Also, update and reword them a bit.
llvm-svn: 56877
|
|
|
|
|
|
| |
attributes
llvm-svn: 56868
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Completely eliminate the TopOrder std::vector. Instead, sort
the AllNodes list in place. This also eliminates the need to
call AllNodes.size(), a linear-time operation, before
performing the sort.
Also, eliminate the Sources temporary std::vector, since it
essentially duplicates the sorted result as it is being
built.
This also changes the direction of the topological sort
from bottom-up to top-down. The AllNodes list starts out in
roughly top-down order, so this reduces the amount of
reordering needed. Top-down is also more convenient for
Legalize, and ISel needed only minor adjustments.
llvm-svn: 56867
|
|
|
|
|
|
| |
module. Patch by David Chisnall.
llvm-svn: 56849
|
|
|
|
| |
llvm-svn: 56848
|
|
|
|
|
|
|
|
|
|
| |
"If a re-materializable instruction has a register
operand, the spiller will change the register operand's
spill weight to HUGE_VAL to avoid it being spilled.
However, if the operand is already in the queue ready
to be spilled, avoid re-materializing it".
llvm-svn: 56837
|
|
|
|
|
|
| |
change the register operand's spill weight to HUGE_VAL to avoid it being spilled. However, if the operand is already in the queue ready to be spilled, avoid re-materializing it.
llvm-svn: 56835
|
|
|
|
| |
llvm-svn: 56834
|