| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 221474
|
|
|
|
| |
llvm-svn: 219672
|
|
|
|
|
|
|
|
|
|
|
| |
shorter/easier and have the DAG use that to do the same lookup. This
can be used in the future for TargetMachine based caching lookups from
the MachineFunction easily.
Update the MIPS subtarget switching machinery to update this pointer
at the same time it runs.
llvm-svn: 214838
|
|
|
|
|
|
| |
information and update all callers. No functional change.
llvm-svn: 214781
|
|
|
|
|
|
|
|
|
|
|
|
| |
define below all header includes in the lib/CodeGen/... tree. While the
current modules implementation doesn't check for this kind of ODR
violation yet, it is likely to grow support for it in the future. It
also removes one layer of macro pollution across all the included
headers.
Other sub-trees will follow.
llvm-svn: 206837
|
|
|
|
|
|
|
|
|
|
| |
operator* on the by-operand iterators to return a MachineOperand& rather than
a MachineInstr&. At this point they almost behave like normal iterators!
Again, this requires making some existing loops more verbose, but should pave
the way for the big range-based for-loop cleanups in the future.
llvm-svn: 203865
|
|
|
|
|
|
| |
class.
llvm-svn: 203220
|
|
|
|
|
|
| |
Remove the old functions.
llvm-svn: 202636
|
|
|
|
|
|
|
|
| |
triggered in MSVC 12.
Patch reviewed by Reid Kleckner and Jim Grosbach.
llvm-svn: 194533
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When new virtual registers are created during splitting/spilling, defer
creation of the live interval until we need to use the live interval.
Along with the recent commits to notify LiveRangeEdit when new virtual
registers are created, this makes it possible for functions like
TargetInstrInfo::loadRegFromStackSlot() and
TargetInstrInfo::storeRegToStackSlot() to create multiple virtual
registers as part of the process of generating loads/stores for
different register classes, and then have the live intervals for those
new registers computed when they are needed.
llvm-svn: 188437
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.
Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]
llvm-svn: 169131
|
|
|
|
|
|
|
|
|
|
|
| |
No functional change, just moved header files.
Targets can inject custom passes between register allocation and
rewriting. This makes it possible to tweak the register allocation
before rewriting, using the full global interference checking available
from LiveRegMatrix.
llvm-svn: 168806
|
|
|
|
|
|
| |
backend, not just libCodeGen
llvm-svn: 153906
|
|
|
|
|
|
| |
TargetInstrInfo, MachineRegisterInfo, LiveIntervals, and VirtRegMap are all passed into the constructor and stored as members instead of passed in to each method.
llvm-svn: 153903
|
|
|
|
|
|
|
|
| |
methods are no longer needed now that LinearScan has gone away.
(Contains tweaks trivialSpillEverywhere to enable the removal of getNewVRegs).
llvm-svn: 151658
|
|
|
|
|
|
|
|
|
|
| |
If a value is defined by a COPY, that instuction can easily and cheaply
be found by getInstructionFromIndex(VNI->def).
This reduces the size of VNInfo from 24 to 16 bytes, and improves
llc compile time by 3%.
llvm-svn: 149763
|
|
|
|
|
|
|
|
| |
of several newly un-defaulted switches. This also helps optimizers
(including LLVM's) recognize that every case is covered, and we should
assume as much.
llvm-svn: 147861
|
|
|
|
| |
llvm-svn: 147855
|
|
|
|
|
|
| |
http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
llvm-svn: 146960
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The old naming scheme (load/use/def/store) can be traced back to an old
linear scan article, but the names don't match how slots are actually
used.
The load and store slots are not needed after the deferred spill code
insertion framework was deleted.
The use and def slots don't make any sense because we are using
half-open intervals as is customary in C code, but the names suggest
closed intervals. In reality, these slots were used to distinguish
early-clobber defs from normal defs.
The new naming scheme also has 4 slots, but the names match how the
slots are really used. This is a purely mechanical renaming, but some
of the code makes a lot more sense now.
llvm-svn: 144503
|
|
|
|
|
|
|
| |
Nobody cared, StackSlotColoring scans the instructions to find used stack
slots.
llvm-svn: 144485
|
|
|
|
|
|
| |
The current register allocators all use the inline spiller.
llvm-svn: 144477
|
|
|
|
| |
llvm-svn: 130068
|
|
|
|
|
|
|
| |
This makes it possible to register delegates and get callbacks when the spiller
edits live ranges.
llvm-svn: 127389
|
|
|
|
|
|
| |
SmallVectors.
llvm-svn: 127388
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
physical register numbers.
This makes the hack used in LiveInterval official, and lets LiveInterval be
oblivious of stack slots.
The isPhysicalRegister() and isVirtualRegister() predicates don't know about
this, so when a variable may contain a stack slot, isStackSlot() should always
be tested first.
llvm-svn: 123128
|
|
|
|
|
|
|
| |
Soon, RegAllocGreedy will start splitting live ranges, and then deferred
spilling won't work anyway.
llvm-svn: 121591
|
|
|
|
|
|
| |
superceded by SplitKit.
llvm-svn: 118754
|
|
|
|
|
|
|
|
|
| |
benchmarks hitting an assertion.
Adds LiveIntervalUnion::collectInterferingVRegs.
Fixes "late spilling" by checking for any unspillable live vregs among
all physReg aliases.
llvm-svn: 118701
|
|
|
|
| |
llvm-svn: 117337
|
|
|
|
|
|
| |
whether LiveIntervals::getInstructionFromIndex(def) returns NULL.
llvm-svn: 114791
|
|
|
|
|
|
| |
and it will be removed shortly.
llvm-svn: 114778
|
|
|
|
|
|
|
|
|
| |
The earliestStart argument is entirely specific to linear scan allocation, and
can be easily calculated by RegAllocLinearScan.
Replace std::vector with SmallVector.
llvm-svn: 111055
|
|
|
|
|
|
|
|
| |
The spillers can pluck the analyses they need from the pass reference.
Switch some never-null pointers to references.
llvm-svn: 108969
|
|
|
|
|
|
| |
non-const.
llvm-svn: 108734
|
|
|
|
| |
llvm-svn: 108062
|
|
|
|
| |
llvm-svn: 107684
|
|
|
|
| |
llvm-svn: 107307
|
|
|
|
|
|
|
|
|
| |
LocalRewriter::runOnMachineFunction uses this information to mark dead spill
slots.
This means that InlineSpiller now also works for functions that spill.
llvm-svn: 107302
|
|
|
|
| |
llvm-svn: 107233
|
|
|
|
|
|
|
|
|
|
|
| |
InlineSpiller inserts loads and spills immediately instead of deferring to
VirtRegMap. This is possible now because SlotIndexes allows instructions to be
inserted and renumbered.
This is work in progress, and is mostly a copy of TrivialSpiller so far. It
works very well for functions that don't require spilling.
llvm-svn: 107227
|
|
|
|
|
|
|
|
|
|
|
|
| |
The VNInfo.kills vector was almost unused except for all the code keeping it
updated. The few places using it were easily rewritten to check for interval
ends instead.
The two new methods LiveInterval::killedAt and killedInRange are replacements.
This brings us down to 3 independent data structures tracking kills.
llvm-svn: 106905
|
|
|
|
|
|
|
|
| |
vector instead. This avoids needless copying and allocation.
Add documentation.
llvm-svn: 106788
|
|
|
|
| |
llvm-svn: 103457
|
|
|
|
|
|
| |
doesn't have to guess.
llvm-svn: 103194
|
|
|
|
| |
llvm-svn: 103193
|
|
|
|
| |
llvm-svn: 103185
|
|
|
|
| |
llvm-svn: 100703
|
|
|
|
| |
llvm-svn: 92591
|
|
|
|
|
|
| |
This fixes an in-place update bug where code inserted at the end of basic blocks may not be covered by existing intervals which were live across the entire block. It is also consistent with the way ranges are specified for live intervals.
llvm-svn: 91859
|