| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
This may eliminate some uses of the spilled registers, and we don't want to
insert reloads for that.
llvm-svn: 128468
|
|
|
|
| |
llvm-svn: 128465
|
|
|
|
|
|
|
| |
the FailBB dominator is correctly calculated. Believe it or not, there isn't a
functionality change here.
llvm-svn: 128455
|
|
|
|
|
|
| |
dominator information.
llvm-svn: 128452
|
|
|
|
| |
llvm-svn: 128450
|
|
|
|
|
|
|
|
| |
The instruction to be rematerialized may not be the one defining the register
that is being spilled. The traceSiblingValue() function sees through sibling
copies to find the remat candidate.
llvm-svn: 128449
|
|
|
|
|
|
|
| |
becomes reachable when before it wasn't). Check to make sure that it's not null
before trying to use it.
llvm-svn: 128434
|
|
|
|
|
|
| |
integrated-as.
llvm-svn: 128431
|
|
|
|
| |
llvm-svn: 128398
|
|
|
|
|
|
|
|
|
| |
The reassignment phase was able to move interference with a higher spill weight,
but it didn't happen very often and it was fairly expensive.
The existing interference eviction picks up the slack.
llvm-svn: 128397
|
|
|
|
|
|
|
|
|
| |
The main register class may have been inflated by live range splitting, so that
register class is not necessarily valid for the snippet instructions.
Use the original register class for the stack slot interval.
llvm-svn: 128351
|
|
|
|
|
|
|
|
| |
It couldn't be used outside of the file because SDISelAsmOperandInfo
is local to SelectionDAGBuilder.cpp. Making it a static function avoids
a weird linkage dance.
llvm-svn: 128342
|
|
|
|
|
|
|
|
|
|
|
| |
Correctly terminate the range of register DBG_VALUEs when the register is
clobbered or when the basic block ends.
The code is now ready to deal with variables that are sometimes in a register
and sometimes on the stack. We just need to teach emitDebugLoc to say 'stack
slot'.
llvm-svn: 128327
|
|
|
|
|
|
|
|
|
|
|
|
| |
DBG_VALUEs.
The .dot directives don't need labels, that is a leftover from when we created
line number info manually.
Instructions following a DBG_VALUE can share its label since the DBG_VALUE
doesn't produce any code.
llvm-svn: 128284
|
|
|
|
|
|
|
| |
Yet another case of unchecked NULL node (for physreg copy).
May fix PR9509.
llvm-svn: 128266
|
|
|
|
|
|
| |
printing a single character.
llvm-svn: 128256
|
|
|
|
|
|
|
|
|
| |
Add an assertion to linear scan to prevent it from allocating registers outside
the register class.
<rdar://problem/9183021>
llvm-svn: 128254
|
|
|
|
|
|
|
|
| |
r119613.
A better approach would be to move source id handling inside MC.
llvm-svn: 128233
|
|
|
|
|
|
| |
Also cleaning up some duplicated code while I'm here.
llvm-svn: 128176
|
|
|
|
|
|
|
|
|
| |
so the scheduler can't create new interferences on the copies
themselves. Prior to this fix the scheduler could get stuck in a loop
creating copies.
Fixes PR9509.
llvm-svn: 128164
|
|
|
|
| |
llvm-svn: 128163
|
|
|
|
|
|
|
|
| |
Each of these instructions may have a RegsClobberInsn entry that can't be
ignored. Consecutive ranges are coalesced later when DwarfDebug::emitDebugLoc
merges entries.
llvm-svn: 128155
|
|
|
|
|
|
| |
The register allocator needs to know when the range shrinks.
llvm-svn: 128145
|
|
|
|
|
|
| |
Empty ranges may represent undef values.
llvm-svn: 128144
|
|
|
|
| |
llvm-svn: 128143
|
|
|
|
|
|
|
|
| |
I'm tired of doing this manually for each checkout.
If anyone knows a better way debug isel for non-trivial tests feel
free to revert and let me know how to do it.
llvm-svn: 128132
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This will extend the ranges of debug info variables in registers until they are
clobbered.
Fix 1: Don't mistake DBG_VALUE instructions referring to incoming arguments on
the stack with DBG_VALUE instructions referring to variables in the frame
pointer. This fixes the gdb test-suite failure.
Fix 2: Don't trace through copies to physical registers setting up call
arguments. These registers are call clobbered, and the source register is more
likely to be a callee-saved register that can be extended through the call
instruction.
llvm-svn: 128114
|
|
|
|
|
|
| |
Temporarily reverting these to see if we can get llvm-objdump to link. Hopefully this is not the problem.
llvm-svn: 128097
|
|
|
|
|
|
| |
This is likely to fix the segfault in llvm-gcc-x86_64-darwin10-cross-mingw32.
llvm-svn: 128051
|
|
|
|
|
|
|
|
|
|
| |
These ranges get completely jumbled by the post-ra scheduler, and it is not
really reasonable to expect it to make sense of them.
Instead, teach DwarfDebug to notice when user variables in registers are
clobbered, and terminate the ranges there.
llvm-svn: 128045
|
|
|
|
| |
llvm-svn: 128004
|
|
|
|
|
|
|
|
|
| |
the alias of an InstAlias instead of the thing being aliased. Because we need to
know the features that are valid for an InstAlias.
This is part of a work-in-progress.
llvm-svn: 127986
|
|
|
|
| |
llvm-svn: 127973
|
|
|
|
|
|
|
| |
This can happen when multiple sibling registers are spilled after live range
splitting.
llvm-svn: 127965
|
|
|
|
|
|
| |
some redundant lookups.
llvm-svn: 127964
|
|
|
|
| |
llvm-svn: 127960
|
|
|
|
| |
llvm-svn: 127959
|
|
|
|
| |
llvm-svn: 127952
|
|
|
|
|
|
|
|
| |
not have native support for this operation (such as X86).
The legalized code uses two vector INT_TO_FP operations and is faster
than scalarizing.
llvm-svn: 127951
|
|
|
|
| |
llvm-svn: 127944
|
|
|
|
| |
llvm-svn: 127943
|
|
|
|
| |
llvm-svn: 127939
|
|
|
|
|
|
|
|
|
|
|
| |
Proof-of-concept code that code-gens a module to an in-memory MachO object.
This will be hooked up to a run-time dynamic linker library (see: llvm-rtdyld
for similarly conceptual work for that part) which will take the compiled
object and link it together with the rest of the system, providing back to the
JIT a table of available symbols which will be used to respond to the
getPointerTo*() queries.
llvm-svn: 127916
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The llvm.dbg.value intrinsic refers to SSA values, not virtual registers, so we
should be able to extend the range of a value by tracking that value through
register copies. This greatly improves the debug value tracking for function
arguments that for some reason are copied to a second virtual register at the
end of the entry block.
We only extend the debug value range where its register is killed. All original
llvm.dbg.value locations are still respected.
Copies from physical registers are ignored. That should not be a problem since
the entry block already adds DBG_VALUE instructions for the virtual registers
holding the function arguments.
llvm-svn: 127912
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Stack slot real estate is virtually free compared to registers, so it is
advantageous to spill earlier even though the same value is now kept in both a
register and a stack slot.
Also eliminate redundant spills by extending the stack slot live range
underneath reloaded registers.
This can trigger a dead code elimination, removing copies and even reloads that
were only feeding spills.
llvm-svn: 127868
|
|
|
|
|
|
|
| |
This is not supposed to happen, but I have seen the x86 rematter getting
confused when rematerializing partial redefs.
llvm-svn: 127857
|
|
|
|
|
|
|
|
| |
and early clobbers.
Assert when trying to find an undefined value.
llvm-svn: 127856
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
multiplied value by introducing an early shift.
This allows us to compile "unsigned foo(unsigned x) { return x/28; }" into
shrl $2, %edi
imulq $613566757, %rdi, %rax
shrq $32, %rax
ret
instead of
movl %edi, %eax
imulq $613566757, %rax, %rcx
shrq $32, %rcx
subl %ecx, %eax
shrl %eax
addl %ecx, %eax
shrl $4, %eax
on x86_64
llvm-svn: 127829
|
|
|
|
|
|
|
|
|
| |
components.
I have convinced myself that it can only happen when a phi value dies. When it
happens, allocate new virtual registers for the components.
llvm-svn: 127827
|
|
|
|
| |
llvm-svn: 127809
|