- Jul 24, 2004
-
-
Alkis Evlogimenos authored
LiveInterval>. This saves some space and removes the pointer indirection caused by following the pointer. llvm-svn: 15167
-
Chris Lattner authored
llvm-svn: 15163
-
Chris Lattner authored
llvm-svn: 15162
-
Chris Lattner authored
llvm-svn: 15161
-
Chris Lattner authored
llvm-svn: 15160
-
Chris Lattner authored
llvm-svn: 15159
-
Chris Lattner authored
llvm-svn: 15158
-
Chris Lattner authored
llvm-svn: 15157
-
Chris Lattner authored
us back to taking about 10.5s on gcc, instead of taking 15.6s! The net result is that my big patches have hand no significant effect on compile time or code quality. heh. llvm-svn: 15156
-
Chris Lattner authored
ownership of the intervals. llvm-svn: 15155
-
Chris Lattner authored
Interval. This generalizes the isDefinedOnce mechanism that we used before to help us coallesce ranges that overlap. As part of this, every logical range with a different value is assigned a different number in the interval. For example, for code that looks like this: 0 X = ... 4 X += ... ... N = X We now generate a live interval that contains two ranges: [2,6:0),[6,?:1) reflecting the fact that there are two different values in the range at different positions in the code. Currently we are not using this information at all, so this just slows down liveintervals. In the future, this will change. Note that this change also substantially refactors the joinIntervalsInMachineBB method to merge the cases for virt-virt and phys-virt joining into a single case, adds comments, and makes the code a bit easier to follow. llvm-svn: 15154
-
Chris Lattner authored
make overlapsAliases take pointers instead of references fix indentation llvm-svn: 15153
-
Chris Lattner authored
* Fix comment typeo * add dump() methods * add a few new methods like getLiveRangeContaining, removeRange & joinable (which is currently the same as overlaps) * Remove the unused operator== Bigger change: * In LiveInterval, instead of using a boolean isDefinedOnce to keep track of if there are > 1 definitions in a particular interval, keep a counter, NumValues to keep track of exactly how many there are. * In LiveRange, add a new ValId element to indicate which of the numbered values each LiveRange belongs to. We now no longer merge LiveRanges if they are of differing value ID's even if they are neighbors. llvm-svn: 15152
-
Misha Brukman authored
have a nightly tester set up for PowerPC. llvm-svn: 15147
-
Misha Brukman authored
llvm-svn: 15146
-
- Jul 23, 2004
-
-
Misha Brukman authored
llvm-svn: 15145
-
Chris Lattner authored
* Inline some functions * Eliminate some comparisons from the release build This is good for another .3 on gcc. llvm-svn: 15144
-
Misha Brukman authored
llvm-svn: 15143
-
Brian Gaeke authored
llvm-svn: 15142
-
Chris Lattner authored
want to insert a new range into the middle of the vector, then delete ranges one at a time next to the inserted one as they are merged. Instead, if the inserted interval overlaps, just start merging. The only time we insert into the middle of the vector is when we don't overlap at all. Also delete blocks of live ranges if we overlap with many of them. This patch speeds up joining by .7 seconds on a large testcase, but more importantly gets all of the range adding code into addRangeFrom. llvm-svn: 15141
-
Brian Gaeke authored
(e.g., LICM) into FunctionPassManagers. The problem is that we were using a C-style cast to cast required analysis passes to PassClass*, but if it's a FunctionPassManager, and the required analysis pass is an ImmutablePass, the types aren't really compatible, so the C-style cast causes a crash. llvm-svn: 15140
-
Chris Lattner authored
comparisons, reducing linscan by another .1 seconds :) llvm-svn: 15139
-
Chris Lattner authored
llvm-svn: 15138
-
Chris Lattner authored
llvm-svn: 15137
-
Chris Lattner authored
a very modest speedup of .3 seconds compiling 176.gcc (out of 20s). llvm-svn: 15136
-
Chris Lattner authored
llvm-svn: 15135
-
Chris Lattner authored
will soon be renamed) into their own file. The new file should not emit DEBUG output or have other side effects. The LiveInterval class also now doesn't know whether its working on registers or some other thing. In the future we will want to use the LiveInterval class and friends to do stack packing. In addition to a code simplification, this will allow us to do it more easily. llvm-svn: 15134
-
Misha Brukman authored
* Function pointers implemented correctly using appropriate stubs Contributed by Nate Begeman. llvm-svn: 15133
-
John Criswell authored
standards. This is in hopes of fixing configuration problems on Windows Services for Unix. llvm-svn: 15132
-
Chris Lattner authored
Use an explicit LiveRange class to represent ranges instead of an std::pair. This is a minor cleanup, but is really intended to make a future patch simpler and less invasive. Alkis, could you please take a look at LiveInterval::liveAt? I suspect that you can add an operator<(unsigned) to LiveRange, allowing us to speed up the upper_bound call by quite a bit (this would also apply to other callers of upper/lower_bound). I would do it myself, but I still don't understand that crazy liveAt function, despite the comment. :) Basically I would like to see this: LiveRange dummy(index, index+1); Ranges::const_iterator r = std::upper_bound(ranges.begin(), ranges.end(), dummy); Turn into: Ranges::const_iterator r = std::upper_bound(ranges.begin(), ranges.end(), index); llvm-svn: 15130
-
Chris Lattner authored
llvm-svn: 15129
-
Chris Lattner authored
the live intervals for some registers. llvm-svn: 15125
-
Chris Lattner authored
interfere. Because these intervals have a single definition, and one of them is a copy instruction, they are always safe to merge even if their lifetimes interfere. This slightly reduces the amount of spill code, for example on 252.eon, from: 12837 spiller - Number of loads added 7604 spiller - Number of stores added 5842 spiller - Number of register spills 18155 liveintervals - Number of identity moves eliminated after coalescing to: 12754 spiller - Number of loads added 7585 spiller - Number of stores added 5803 spiller - Number of register spills 18262 liveintervals - Number of identity moves eliminated after coalescing The much much bigger win would be to merge intervals with multiple definitions (aka phi nodes) but this is not that day. llvm-svn: 15124
-
Misha Brukman authored
* Print out another '\n' after printing out program execution status * Make sure code wraps at 80 cols llvm-svn: 15123
-
Misha Brukman authored
llvm-svn: 15122
-
Misha Brukman authored
* Fix indentation back to 2 spaces llvm-svn: 15121
-
Misha Brukman authored
* Convert tabs to spaces llvm-svn: 15120
-
Misha Brukman authored
* Fix spacing llvm-svn: 15119
-
Chris Lattner authored
llvm-svn: 15118
-
Misha Brukman authored
llvm-svn: 15117
-