| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 57096
|
|
|
|
|
|
|
|
| |
shifting and masking inside a bswap expr. This allows it to handle
the cases from PR2842, which involve the intermediate 'or'
expressions being shifted, not just the input value.
llvm-svn: 57095
|
|
|
|
|
|
| |
ashr. It should only apply to lshr.
llvm-svn: 57089
|
|
|
|
|
|
| |
patch by Mikael Lepisto!
llvm-svn: 57077
|
|
|
|
|
|
| |
for llvmc2 incomplete.
llvm-svn: 57076
|
|
|
|
|
|
|
|
| |
when deciding whether to mark a function readnone/readonly.
Since the pass is currently run before SROA, this may be
quite helpful. Requested by Chris on IRC.
llvm-svn: 57050
|
|
|
|
|
|
| |
implementing folding. Fixes PR2857.
llvm-svn: 57049
|
|
|
|
| |
llvm-svn: 57048
|
|
|
|
|
|
| |
sys::Memory::setExecutable on Win32 platform.
llvm-svn: 57047
|
|
|
|
| |
llvm-svn: 57046
|
|
|
|
|
|
|
|
| |
expand to multiple basic blocks, in which case fast-isel
needs to informed of which block to use as it resumes
inserting instructions.
llvm-svn: 57040
|
|
|
|
|
|
|
|
| |
was setting kill flags on tied uses in two-address instructions.
The kill flags were causing the allocator to think it could
allocate the use and its tied def in different registers.
llvm-svn: 57039
|
|
|
|
|
|
| |
Make it all work in non-pic mode.
llvm-svn: 57034
|
|
|
|
|
|
| |
applicable.
llvm-svn: 57033
|
|
|
|
|
|
| |
Thanks Duncan!
llvm-svn: 57029
|
|
|
|
|
|
|
| |
incidentally making the case where the memop is a
pointer deref work. Fix cmp-and-swap regression.
llvm-svn: 57027
|
|
|
|
|
|
| |
While hosting instruction check PHI node.
llvm-svn: 57025
|
|
|
|
| |
llvm-svn: 57021
|
|
|
|
| |
llvm-svn: 57020
|
|
|
|
| |
llvm-svn: 57018
|
|
|
|
| |
llvm-svn: 57017
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead, just create one, and make sure everything that needs
it can access it. Previously most of the SelectionDAGISel
subclasses all had their own TargetLowering object, which was
redundant with the TargetLowering object in the TargetMachine
subclasses, except on Sparc, where SparcTargetMachine
didn't have a TargetLowering object. Change Sparc to work
more like the other targets here.
llvm-svn: 57016
|
|
|
|
| |
llvm-svn: 57014
|
|
|
|
|
|
|
| |
this handling to work properly for modifying stub functions, relocations
back to entry points after JIT compilation, etc..
llvm-svn: 57013
|
|
|
|
|
|
| |
reg->reg moves.
llvm-svn: 57011
|
|
|
|
|
|
| |
for global relocations that do need them (libc calls, for example).
llvm-svn: 57010
|
|
|
|
| |
llvm-svn: 57009
|
|
|
|
| |
llvm-svn: 57008
|
|
|
|
| |
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
|