| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
| |
- Cleaned up how the prologue-epilogue inserter loops over the instructions.
- Instead of restarting the processing of an instruction if we remove an
implicit kill, just update the end iterator and make sure that the iterator
isn't incremented.
llvm-svn: 47870
|
|
|
|
|
|
|
| |
the register scavenger to process all of those new instructions instead of just
the last one inserted.
llvm-svn: 47860
|
|
|
|
|
|
| |
deleted later. Let PEI compute it.
llvm-svn: 47668
|
|
|
|
| |
llvm-svn: 47657
|
|
|
|
| |
llvm-svn: 47452
|
|
|
|
| |
llvm-svn: 46930
|
|
|
|
|
|
|
|
|
| |
information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc.
Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes.
For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time.
llvm-svn: 46659
|
|
|
|
|
|
| |
llvm.dbg.func.start implies a stoppoint is set. SelectionDAGISel records a new source line but does not create a ISD::LABEL node for this special stoppoint. Asm printer will magically print this label. This ensures nothing is emitted before.
llvm-svn: 46635
|
|
|
|
|
|
| |
or misc labels. This fixes the EH breakage. However I am not convinced this is *the* solution.
llvm-svn: 46609
|
|
|
|
| |
llvm-svn: 46586
|
|
|
|
|
|
|
| |
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.
llvm-svn: 45695
|
|
|
|
| |
llvm-svn: 45680
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that it is cheap and efficient to get.
Move a variety of predicates from TargetInstrInfo into
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around. Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.
Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.
llvm-svn: 45674
|
|
|
|
| |
llvm-svn: 45655
|
|
|
|
| |
llvm-svn: 45608
|
|
|
|
| |
llvm-svn: 45484
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that "machine" classes are used to represent the current state of
the code being compiled. Given this expanded name, we can start
moving other stuff into it. For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.
Update all the clients to match.
This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.
llvm-svn: 45467
|
|
|
|
| |
llvm-svn: 45454
|
|
|
|
| |
llvm-svn: 45418
|
|
|
|
|
|
| |
the stored register is killed.
llvm-svn: 44600
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fills the last necessary bits to enable exceptions
handling in LLVM. Currently only on x86-32/linux.
In fact, this patch adds necessary intrinsics (and their lowering) which
represent really weird target-specific gcc builtins used inside unwinder.
After corresponding llvm-gcc patch will land (easy) exceptions should be
more or less workable. However, exceptions handling support should not be
thought as 'finished': I expect many small and not so small glitches
everywhere.
llvm-svn: 39855
|
|
|
|
|
|
|
| |
When a function has FP, the register scavenging spill slot offset already
was calculated.
llvm-svn: 37371
|
|
|
|
| |
llvm-svn: 36662
|
|
|
|
|
|
|
| |
Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.
llvm-svn: 36652
|
|
|
|
| |
llvm-svn: 36632
|
|
|
|
|
|
| |
eliminateFrameIndex() must adjust SP offset with size of call frames.
llvm-svn: 36625
|
|
|
|
|
|
|
|
|
|
|
|
| |
argument space for call sites in the function immediately on entry to the
current function. This eliminates the need for add/sub sp brackets around call
sites. However, this is not always a good idea. If the "call frame" is large and
the target load / store instructions have small immediate field to encode sp
offset, this can cause poor codegen. In the worst case, this can make it
impossible to scavenge a register if the reserved spill slot is pushed too far
apart from sp / fp.
llvm-svn: 36607
|
|
|
|
| |
llvm-svn: 36452
|
|
|
|
| |
llvm-svn: 36425
|
|
|
|
| |
llvm-svn: 36422
|
|
|
|
|
|
|
| |
instructions which replace themselves when FI's are rewritten (common on ppc).
This fixes CodeGen/PowerPC/2006-10-17-ppc64-alloca.ll
llvm-svn: 35789
|
|
|
|
|
|
|
| |
some instructions can have multiple frame indices in them. If this happens,
rewrite all of them.
llvm-svn: 35785
|
|
|
|
|
|
| |
to SP or frame pointer.
llvm-svn: 34965
|
|
|
|
| |
llvm-svn: 34786
|
|
|
|
| |
llvm-svn: 34772
|
|
|
|
| |
llvm-svn: 34735
|
|
|
|
| |
llvm-svn: 34711
|
|
|
|
| |
llvm-svn: 34706
|
|
|
|
| |
llvm-svn: 34691
|
|
|
|
|
|
| |
instruction between now and next forward() call.
llvm-svn: 34649
|
|
|
|
| |
llvm-svn: 34516
|
|
|
|
|
|
| |
for debugging and exception handling.
llvm-svn: 33550
|
|
|
|
|
|
| |
rounding the stack frame to a multiple of stack alignment.
llvm-svn: 33504
|
|
|
|
|
|
| |
the stack. Each target can further adjust the frame size if necessary.
llvm-svn: 33460
|
|
|
|
| |
llvm-svn: 33396
|
|
|
|
|
|
| |
emitPrologue(). Each target can make adjustments to the stack frame and re-align the stack as it deem appropriate. Do not align it twice which can end up wasting stack space.
llvm-svn: 33387
|
|
|
|
|
|
| |
- Make use of spillCalleeSavedRegisters() and restoreCalleeSavedRegisters().
llvm-svn: 32822
|
|
|
|
| |
llvm-svn: 32299
|
|
|
|
|
|
| |
cannot be honored if stack alignment is smaller.
llvm-svn: 30648
|
|
|
|
|
|
|
| |
incoming stack. This allows X86 backend to use push / pop in epilogue /
prologue.
llvm-svn: 30636
|