|
Revision tags: llvmorg-3.5.0, llvmorg-3.5.0-rc4, llvmorg-3.5.0-rc3, llvmorg-3.5.0-rc2 |
|
| #
fc6de428 |
| 05-Aug-2014 |
Eric Christopher <[email protected]> |
Have MachineFunction cache a pointer to the subtarget to make lookups shorter/easier and have the DAG use that to do the same lookup. This can be used in the future for TargetMachine based caching lo
Have MachineFunction cache a pointer to the subtarget to make lookups 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
show more ...
|
| #
d913448b |
| 04-Aug-2014 |
Eric Christopher <[email protected]> |
Remove the TargetMachine forwards for TargetSubtargetInfo based information and update all callers. No functional change.
llvm-svn: 214781
|
|
Revision tags: llvmorg-3.5.0-rc1, llvmorg-3.4.2, llvmorg-3.4.2-rc1, llvmorg-3.4.1, llvmorg-3.4.1-rc2 |
|
| #
1b9dde08 |
| 22-Apr-2014 |
Chandler Carruth <[email protected]> |
[Modules] Remove potential ODR violations by sinking the DEBUG_TYPE define below all header includes in the lib/CodeGen/... tree. While the current modules implementation doesn't check for this kind
[Modules] Remove potential ODR violations by sinking the DEBUG_TYPE 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
show more ...
|
| #
c0196b1b |
| 14-Apr-2014 |
Craig Topper <[email protected]> |
[C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr.
llvm-svn: 206142
|
|
Revision tags: llvmorg-3.4.1-rc1 |
|
| #
b36376ef |
| 17-Mar-2014 |
Owen Anderson <[email protected]> |
Switch a number of loops in lib/CodeGen over to range-based for-loops, now that the MachineRegisterInfo iterators are compatible with it.
llvm-svn: 204075
|
| #
16c6bf49 |
| 13-Mar-2014 |
Owen Anderson <[email protected]> |
Phase 2 of the great MachineRegisterInfo cleanup. This time, we're changing operator* on the by-operand iterators to return a MachineOperand& rather than a MachineInstr&. At this point they almost
Phase 2 of the great MachineRegisterInfo cleanup. This time, we're changing 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
show more ...
|
| #
d6f1f84f |
| 02-Mar-2014 |
Benjamin Kramer <[email protected]> |
[C++11] Replace llvm::tie with std::tie.
The old implementation is no longer needed in C++11.
llvm-svn: 202644
|
| #
b6d0bd48 |
| 02-Mar-2014 |
Benjamin Kramer <[email protected]> |
[C++11] Replace llvm::next and llvm::prior with std::next and std::prev.
Remove the old functions.
llvm-svn: 202636
|
|
Revision tags: llvmorg-3.4.0, llvmorg-3.4.0-rc3, llvmorg-3.4.0-rc2, llvmorg-3.4.0-rc1 |
|
| #
2d5c32b3 |
| 10-Oct-2013 |
Matthias Braun <[email protected]> |
Work on LiveRange instead of LiveInterval where possible
Also change some pointer arguments to references at some places where 0-pointers are not allowed.
llvm-svn: 192396
|
| #
13ddb7cd |
| 10-Oct-2013 |
Matthias Braun <[email protected]> |
Rename LiveRange to LiveInterval::Segment
The Segment struct contains a single interval; multiple instances of this struct are used to construct a live range, but the struct is not a live range by i
Rename LiveRange to LiveInterval::Segment
The Segment struct contains a single interval; multiple instances of this struct are used to construct a live range, but the struct is not a live range by itself.
llvm-svn: 192392
show more ...
|
| #
9d8103de |
| 14-Aug-2013 |
Mark Lacey <[email protected]> |
Auto-compute live intervals on demand.
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 r
Auto-compute live intervals on demand.
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
show more ...
|
| #
f9ea8854 |
| 14-Aug-2013 |
Mark Lacey <[email protected]> |
Track new virtual registers by register number.
Track new virtual registers by register number, rather than by the live interval created for them. This is the first step in separating the creation o
Track new virtual registers by register number.
Track new virtual registers by register number, rather than by the live interval created for them. This is the first step in separating the creation of new virtual registers and new live intervals. Eventually live intervals will be created and populated on demand after the virtual registers have been created and used in instructions.
llvm-svn: 188434
show more ...
|
| #
4417c7b2 |
| 14-Aug-2013 |
Jakob Stoklund Olesen <[email protected]> |
Remove unnecessary parameter to RenumberValues.
Patch by Matthias Braun!
llvm-svn: 188393
|
|
Revision tags: llvmorg-3.3.1-rc1 |
|
| #
e2a1d89e |
| 17-Jun-2013 |
Benjamin Kramer <[email protected]> |
Switch spill weights from a basic loop depth estimation to BlockFrequencyInfo.
The main advantages here are way better heuristics, taking into account not just loop depth but also __builtin_expect a
Switch spill weights from a basic loop depth estimation to BlockFrequencyInfo.
The main advantages here are way better heuristics, taking into account not just loop depth but also __builtin_expect and other static heuristics and will eventually learn how to use profile info. Most of the work in this patch is pushing the MachineBlockFrequencyInfo analysis into the right places.
This is good for a 5% speedup on zlib's deflate (x86_64), there were some very unfortunate spilling decisions in its hottest loop in longest_match(). Other benchmarks I tried were mostly neutral.
This changes register allocation in subtle ways, update the tests for it. 2012-02-20-MachineCPBug.ll was deleted as it's very fragile and the instruction it looked for was gone already (but the FileCheck pattern picked up unrelated stuff).
llvm-svn: 184105
show more ...
|
|
Revision tags: llvmorg-3.3.0, llvmorg-3.3.0-rc3, llvmorg-3.3.0-rc2, llvmorg-3.3.0-rc1, llvmorg-3.2.0, llvmorg-3.2.0-rc3, llvmorg-3.2.0-rc2 |
|
| #
26c9d70d |
| 28-Nov-2012 |
Jakob Stoklund Olesen <[email protected]> |
Make the LiveRegMatrix analysis available to targets.
No functional change, just moved header files.
Targets can inject custom passes between register allocation and rewriting. This makes it possib
Make the LiveRegMatrix analysis available to targets.
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
show more ...
|
|
Revision tags: llvmorg-3.2.0-rc1 |
|
| #
19f49ac6 |
| 11-Sep-2012 |
Manman Ren <[email protected]> |
Release build: guard dump functions with "#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)"
No functional change. Update r163339.
llvm-svn: 163653
|
| #
742534c4 |
| 06-Sep-2012 |
Manman Ren <[email protected]> |
Release build: guard dump functions with "ifndef NDEBUG"
No functional change.
llvm-svn: 163339
|
| #
21809385 |
| 03-Aug-2012 |
Jakob Stoklund Olesen <[email protected]> |
Fix a couple of loops that were processing unused value numbers.
Unused VNInfos should be left alone. Their def SlotIndex doesn't point to anything.
llvm-svn: 161257
|
| #
97e14e02 |
| 27-Jul-2012 |
Jakob Stoklund Olesen <[email protected]> |
Eliminate the IS_PHI_DEF flag and VNInfo::setIsPHIDef().
A value number is a PHI def if and only if it begins at a block boundary. This can be derived from the def slot, a separate flag is not neces
Eliminate the IS_PHI_DEF flag and VNInfo::setIsPHIDef().
A value number is a PHI def if and only if it begins at a block boundary. This can be derived from the def slot, a separate flag is not necessary.
llvm-svn: 160893
show more ...
|
| #
5ef0e0b2 |
| 04-Jun-2012 |
Jakob Stoklund Olesen <[email protected]> |
Pass context pointers to LiveRangeCalc::reset().
Remove the same pointers from all the other LiveRangeCalc functions, simplifying the interface.
llvm-svn: 157941
|
|
Revision tags: llvmorg-3.1.0, llvmorg-3.1.0-rc3, llvmorg-3.1.0-rc2, llvmorg-3.1.0-rc1 |
|
| #
3ca96f99 |
| 02-Apr-2012 |
Pete Cooper <[email protected]> |
Moved LiveRangeEdit.h so that it can be called from other parts of the backend, not just libCodeGen
llvm-svn: 153906
|
| #
2bde2f42 |
| 02-Apr-2012 |
Pete Cooper <[email protected]> |
Refactored the LiveRangeEdit interface so that MachineFunction, TargetInstrInfo, MachineRegisterInfo, LiveIntervals, and VirtRegMap are all passed into the constructor and stored as members instead o
Refactored the LiveRangeEdit interface so that MachineFunction, 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
show more ...
|
| #
ad6b22eb |
| 04-Feb-2012 |
Jakob Stoklund Olesen <[email protected]> |
Don't store COPY pointers in VNInfo.
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 t
Don't store COPY pointers in VNInfo.
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
show more ...
|
| #
46a9f016 |
| 20-Jan-2012 |
David Blaikie <[email protected]> |
More dead code removal (using -Wunreachable-code)
llvm-svn: 148578
|
| #
8b1d023a |
| 11-Jan-2012 |
Jakob Stoklund Olesen <[email protected]> |
Detect when a value is undefined on an edge to a landing pad.
Consider this code:
int h() { int x; try { x = f(); g(); } catch (...) { return x+1; } return x; }
The variable
Detect when a value is undefined on an edge to a landing pad.
Consider this code:
int h() { int x; try { x = f(); g(); } catch (...) { return x+1; } return x; }
The variable x is undefined on the first edge to the landing pad, but it has the f() return value on the second edge to the landing pad.
SplitAnalysis::getLastSplitPoint() would assume that the return value from f() was live into the landing pad when f() throws, which is of course impossible.
Detect these cases, and treat them as if the landing pad wasn't there. This allows spill code to be inserted after the function call to f().
<rdar://problem/10664933>
llvm-svn: 147912
show more ...
|