Gitiles
Code Review
Sign In
gerrit-public.fairphone.software
/
fp2-dev
/
platform
/
external
/
llvm
/
74de8b1b26b12fda3364382946e519a2e37b6709
/
lib
/
CodeGen
/
LiveIntervalAnalysis.cpp
74de8b1
There is no need to store the MBB along with the MI any more, we can now
by Chris Lattner
· 21 years ago
472405e
Simplify the interface to LiveVariables::addVirtualRegister(Killed|Dead)
by Chris Lattner
· 21 years ago
8ea13c6
Two changes, both very significant:
by Chris Lattner
· 21 years ago
57eb15e
See comments. The live intervals were not coming out of the spiller in sorted
by Chris Lattner
· 21 years ago
6097d13
remove the mbbi2mbbMap_, which was just keeping track of mbb order anyway.
by Chris Lattner
· 21 years ago
e1b9536
It looks like physref->virtreg joining is working fine. Enable it by default
by Chris Lattner
· 21 years ago
80b27ce
Fix typo.
by Alkis Evlogimenos
· 21 years ago
607baea
Improve code comments.
by Alkis Evlogimenos
· 21 years ago
3877652
Disable coalescing.
by Alkis Evlogimenos
· 21 years ago
5de868b
Do not crash when joining two intervals of registers of different
by Alkis Evlogimenos
· 21 years ago
230b4fb
Revert patches 1.79 and 1.80 which had to do with dead MBB's. Now that they
by Chris Lattner
· 21 years ago
8490f9c
Now that MachineFunction/MachineBasicBlock keep a mapping of blocks to ID #'s
by Chris Lattner
· 21 years ago
8ba9771
Start using MBB numbers directly instead of going through the live variables
by Chris Lattner
· 21 years ago
91a350d
In line with the previous patch, do not assert out if analyzing a dead basic block.
by Chris Lattner
· 21 years ago
59850a8
Do not dereference end iterators. It hurts when you do that.
by Chris Lattner
· 21 years ago
b140762
Made a fix so that you can print out MachineInstrs that belong to a MachineBasicBlock that is not yet attached to a MachineFunction. This change includes changing the third operand (TargetMachine) to a pointer for the MachineInstr::print function.
by Tanya Lattner
· 21 years ago
418da55
Rename Interval class to LiveInterval to avoid conflicting with the already
by Chris Lattner
· 21 years ago
9bcdcd1
Adjust to new TargetMachine interface
by Chris Lattner
· 21 years ago
6924063
Pull Interval class out of LiveIntervals.
by Alkis Evlogimenos
· 21 years ago
26f5a69
When spilling an register, introduce a new temporary for each of its
by Alkis Evlogimenos
· 21 years ago
f717a05
Remove defs vector from live intervals.
by Alkis Evlogimenos
· 21 years ago
feab248
Remove unneeded header
by Alkis Evlogimenos
· 21 years ago
a19eede
numeric_limits::infinity() apparently does not work on all systems. As a
by Chris Lattner
· 21 years ago
015959e
Operate on the Machine CFG instead of on the LLVM CFG
by Chris Lattner
· 21 years ago
6e4d0d6
Fix bug introduced in previous commit.
by Alkis Evlogimenos
· 21 years ago
43b61f7
Correctly compute spill weights
by Alkis Evlogimenos
· 21 years ago
e633352
Print def lists a bit more compactly
by Alkis Evlogimenos
· 21 years ago
9a8b490
Add definition list to each live interval.
by Alkis Evlogimenos
· 21 years ago
39354c9
Change MRegisterInfo::foldMemoryOperand to return the folded
by Alkis Evlogimenos
· 21 years ago
5f37502
Add the long awaited memory operand folding support for linear scan
by Alkis Evlogimenos
· 21 years ago
71e353e
Uncomment assertions that register# != 0 on calls to
by Alkis Evlogimenos
· 21 years ago
98e17cf
Move LiveIntervals.h up to be the first included header
by Alkis Evlogimenos
· 21 years ago
a2f6a40
Move LiveIntervals.h to lib/CodeGen since it shouldn't be exposed to other parts of the compiler
by Alkis Evlogimenos
· 21 years ago
0f338a1
Print basic block boundaries in machine instruction debug output.
by Alkis Evlogimenos
· 21 years ago
7200c6b
Abstract merging of ranges away from number of slots per instruction.
by Alkis Evlogimenos
· 21 years ago
d6f6d1a
Make 'fold' statistic's description the same in both allocators.
by Alkis Evlogimenos
· 21 years ago
007726c
Some more statistics improvements.
by Alkis Evlogimenos
· 21 years ago
df158c7
Disambiguate statistic descriptions.
by Alkis Evlogimenos
· 21 years ago
cea4471
Rename statistic and add another one.
by Alkis Evlogimenos
· 21 years ago
39a0d5c
Too many changes in one commit:
by Alkis Evlogimenos
· 21 years ago
23c114f
Be more agressive when joining ranges.
by Alkis Evlogimenos
· 21 years ago
99d9923
Fix overly conservative spill interval computation.
by Alkis Evlogimenos
· 21 years ago
355a724
Fix spilled interval update. It was too conservative.
by Alkis Evlogimenos
· 21 years ago
843b160
Eliminate the use of spill (reserved) registers.
by Alkis Evlogimenos
· 22 years ago
6ab5c15
Use std::numeric_limits<float>::infinity() instead of
by Alkis Evlogimenos
· 22 years ago
be766c7
Remove getAllocatedRegNum(). Use getReg() instead.
by Alkis Evlogimenos
· 22 years ago
c0b9dc5
Change MachineBasicBlock's vector of MachineInstr pointers into an
by Alkis Evlogimenos
· 22 years ago
1cbe4d0
Do not use MachineOperand::isVirtualRegister either!
by Chris Lattner
· 22 years ago
0b8cb2b
Change live interval representation. Machine instructions now have two
by Alkis Evlogimenos
· 22 years ago
ad48cd6
We don't need to scan the blocks that we are live-in on every
by Alkis Evlogimenos
· 22 years ago
b606eac
Should be more careful. The previously applied change made all counts
by Alkis Evlogimenos
· 22 years ago
b180e3e
Change string for joined intervals.
by Alkis Evlogimenos
· 22 years ago
b0b0eba
Change xor to ^.
by Alkis Evlogimenos
· 22 years ago
676cf8c
Missed one silly assert :-)
by Alkis Evlogimenos
· 22 years ago
01e74a2
Simplify joinIntervals() code.
by Alkis Evlogimenos
· 22 years ago
4f67b86
Use MRegisterInfo::isPhysicalRegister and MRegisterInfo::isVirtualRegister.
by Alkis Evlogimenos
· 22 years ago
52220f6
Apply final part of Chris' patch.
by Alkis Evlogimenos
· 22 years ago
02ba13c
Be a little smarter on the way we handle physical register defs.
by Alkis Evlogimenos
· 22 years ago
08cec00
Merge safe parts from last night's buggy commit. These do not break
by Alkis Evlogimenos
· 22 years ago
97017de
Optimize liveAt() and overlaps(). We now use a binary search instead
by Alkis Evlogimenos
· 22 years ago
4d46e1e
Revert last night's changes as they broke some tests. Will remerge parts of the patch.
by Alkis Evlogimenos
· 22 years ago
32bdd4e
Several performance enhancements and cleanups from Chris.
by Alkis Evlogimenos
· 22 years ago
79b0c3f
Fix failing test cases with joined live intervals. It turns out that
by Alkis Evlogimenos
· 22 years ago
e88280a
Add option to join live intervals. Two intervals are joined if there
by Alkis Evlogimenos
· 22 years ago
1075ecd
Revert previous change. The code was correct...
by Alkis Evlogimenos
· 22 years ago
e1a2107
Fix incorrect negatives in LiveIntervals::Interval::liveAt().
by Alkis Evlogimenos
· 22 years ago
1893a05
Add asserts to previous change.
by Alkis Evlogimenos
· 22 years ago
f5f1689
Use a list instead of a vector to store intervals. This will be needed
by Alkis Evlogimenos
· 22 years ago
d6e40a6
Properly update #intervals statistic.
by Alkis Evlogimenos
· 22 years ago
9739736
Fix bug in LiveIntervals::Interval::overlaps and
by Alkis Evlogimenos
· 22 years ago
af25473
Fix miscomputation of live intervals. The catch is that registers can
by Alkis Evlogimenos
· 22 years ago
1a119e2
Remove allocatable registers vector. It is already provided by LiveVariables.
by Alkis Evlogimenos
· 22 years ago
a3a6524
Cleanup debugging output.
by Alkis Evlogimenos
· 22 years ago
63841bc
Fix output of live intervals to show correctly its closed, open
by Alkis Evlogimenos
· 22 years ago
19b6486
Correctly compute live variable information for physical registers
by Alkis Evlogimenos
· 22 years ago
80b378c
Change implementation of LiveIntervals::overlap(). This results in a
by Alkis Evlogimenos
· 22 years ago
63caedf
Remove simple coalescing.
by Alkis Evlogimenos
· 22 years ago
26bfc08
Add coalescing to register allocator. A hint is added to each interval
by Alkis Evlogimenos
· 22 years ago
7a40eaa
Do a separate pass to compute spill weights because doing it inline
by Alkis Evlogimenos
· 22 years ago
056063e
Fix crash when compiling twolf.
by Alkis Evlogimenos
· 22 years ago
6b4edba
Change weight into a float so that we can take into account the
by Alkis Evlogimenos
· 22 years ago
169cfd0
Add support for inactive intervals. This effectively reuses registers
by Alkis Evlogimenos
· 22 years ago
4c08086
Remove TwoAddressInstruction from the public headers and add an ID
by Alkis Evlogimenos
· 22 years ago
a71e05a
Modify linear scan register allocator to use the two-address
by Alkis Evlogimenos
· 22 years ago
43f692f
When a variable is killed and redifined in a basic block only one
by Alkis Evlogimenos
· 22 years ago
dd2cc65
Handle multiple virtual register definitions gracefully.
by Alkis Evlogimenos
· 22 years ago
f6f91bf
Change preserve all claim to just preserve live variables and phielimination.
by Alkis Evlogimenos
· 22 years ago
4d7af65
Change interface of MachineOperand as follows:
by Alkis Evlogimenos
· 22 years ago
4c214d2
Ignore non-allocatable physical registers in live interval analysis.
by Alkis Evlogimenos
· 22 years ago
9435eda
Handle explicit physical register defs.
by Alkis Evlogimenos
· 22 years ago
b27ef24
Move operator<<(std::ostream&, const LiveInterval&) out of the header file.
by Alkis Evlogimenos
· 22 years ago
91ceae6
Sort live intervals by increasing start point.
by Alkis Evlogimenos
· 22 years ago
ff0cbe1
Merging the linear scan register allocator in trunk. It currently passes most tests under test/Programs/SingleSource/Benchmarks/Shootout so development will continue on trunk. The allocator is not enabled by default. You will need to pass -regallo=linearscan to lli or llc to use it.
by Alkis Evlogimenos
· 22 years ago