#
432a3883 |
| 30-Apr-2018 |
Nico Weber <nicolasweber@gmx.de> |
IWYU for llvm-config.h in llvm, additions.
See r331124 for how I made a list of files missing the include. I then ran this Python script:
for f in open('filelist.txt'): f = f.strip()
IWYU for llvm-config.h in llvm, additions.
See r331124 for how I made a list of files missing the include. I then ran this Python script:
for f in open('filelist.txt'): f = f.strip() fl = open(f).readlines()
found = False for i in xrange(len(fl)): p = '#include "llvm/' if not fl[i].startswith(p): continue if fl[i][len(p):] > 'Config': fl.insert(i, '#include "llvm/Config/llvm-config.h"\n') found = True break if not found: print 'not found', f else: open(f, 'w').write(''.join(fl))
and then looked through everything with `svn diff | diffstat -l | xargs -n 1000 gvim -p` and tried to fix include ordering and whatnot.
No intended behavior change.
llvm-svn: 331184
show more ...
|
Revision tags: llvmorg-6.0.1-rc1 |
|
#
bcadfee2 |
| 12-Apr-2018 |
Hiroshi Inoue <inouehrs@jp.ibm.com> |
[NFC] fix trivial typos in documents and comments
"is is" -> "is", "if if" -> "if", "or or" -> "or"
llvm-svn: 329878
|
Revision tags: llvmorg-5.0.2, llvmorg-5.0.2-rc2, llvmorg-5.0.2-rc1, llvmorg-6.0.0 |
|
#
f40707a2 |
| 26-Feb-2018 |
Tim Renouf <tpr.llvm@botech.co.uk> |
[LiveIntervals] Handle moving up dead partial write
Summary: In the test case, the machine scheduler moves a dead write to a subreg up into the middle of a segment of the overall reg's live range, w
[LiveIntervals] Handle moving up dead partial write
Summary: In the test case, the machine scheduler moves a dead write to a subreg up into the middle of a segment of the overall reg's live range, where the segment had liveness only for other subregs in the reg. handleMoveUp created an invalid live range, causing an assert a bit later.
This commit fixes it to handle that situation. The segment is split in two at the insertion point, and the part after the split, and any subsequent segments up to the old position, are changed to be defined by the moved def.
V2: Better test.
Subscribers: MatzeB, nhaehnle, llvm-commits
Differential Revision: https://reviews.llvm.org/D43478
Change-Id: Ibc42445ddca84e79ad1f616401015d22bc63832e llvm-svn: 326087
show more ...
|
Revision tags: llvmorg-6.0.0-rc3, llvmorg-6.0.0-rc2, llvmorg-6.0.0-rc1 |
|
#
f842297d |
| 13-Dec-2017 |
Matthias Braun <matze@braunis.de> |
Rename LiveIntervalAnalysis.h to LiveIntervals.h
Headers/Implementation files should be named after the class they declare/define.
Also eliminated an `#include "llvm/CodeGen/LiveIntervalAnalysis.h"
Rename LiveIntervalAnalysis.h to LiveIntervals.h
Headers/Implementation files should be named after the class they declare/define.
Also eliminated an `#include "llvm/CodeGen/LiveIntervalAnalysis.h"` in favor of `class LiveIntarvals;`
llvm-svn: 320546
show more ...
|
Revision tags: llvmorg-5.0.1, llvmorg-5.0.1-rc3, llvmorg-5.0.1-rc2, llvmorg-5.0.1-rc1, llvmorg-5.0.0, llvmorg-5.0.0-rc5, llvmorg-5.0.0-rc4, llvmorg-5.0.0-rc3, llvmorg-5.0.0-rc2, llvmorg-5.0.0-rc1, llvmorg-4.0.1, llvmorg-4.0.1-rc3, llvmorg-4.0.1-rc2, llvmorg-4.0.1-rc1, llvmorg-4.0.0, llvmorg-4.0.0-rc4, llvmorg-4.0.0-rc3, llvmorg-4.0.0-rc2, llvmorg-4.0.0-rc1, llvmorg-3.9.1, llvmorg-3.9.1-rc3, llvmorg-3.9.1-rc2, llvmorg-3.9.1-rc1, llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2, llvmorg-3.9.0-rc1, llvmorg-3.8.1, llvmorg-3.8.1-rc1, llvmorg-3.8.0, llvmorg-3.8.0-rc3, llvmorg-3.8.0-rc2, llvmorg-3.8.0-rc1, llvmorg-3.7.1, llvmorg-3.7.1-rc2, llvmorg-3.7.1-rc1, llvmorg-3.7.0, llvmorg-3.7.0-rc4, llvmorg-3.7.0-rc3, studio-1.4, llvmorg-3.7.0-rc2, llvmorg-3.7.0-rc1, llvmorg-3.6.2, llvmorg-3.6.2-rc1, llvmorg-3.6.1, llvmorg-3.6.1-rc1, llvmorg-3.5.2, llvmorg-3.5.2-rc1, llvmorg-3.6.0, llvmorg-3.6.0-rc4, llvmorg-3.6.0-rc3, llvmorg-3.6.0-rc2, llvmorg-3.6.0-rc1, llvmorg-3.5.1, llvmorg-3.5.1-rc2, llvmorg-3.5.1-rc1, llvmorg-3.5.0, llvmorg-3.5.0-rc4, llvmorg-3.5.0-rc3, llvmorg-3.5.0-rc2, llvmorg-3.5.0-rc1, llvmorg-3.4.2, llvmorg-3.4.2-rc1, llvmorg-3.4.1, llvmorg-3.4.1-rc2, llvmorg-3.4.1-rc1, llvmorg-3.4.0, llvmorg-3.4.0-rc3, llvmorg-3.4.0-rc2, llvmorg-3.4.0-rc1, llvmorg-3.3.1-rc1, 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, llvmorg-3.2.0-rc1, llvmorg-3.1.0, llvmorg-3.1.0-rc3, llvmorg-3.1.0-rc2, llvmorg-3.1.0-rc1, llvmorg-3.0.0, llvmorg-3.0.0-rc4, llvmorg-3.0.0-rc3, llvmorg-3.0.0-rc2, llvmorg-3.0.0-rc1, llvmorg-2.9.0, llvmorg-2.9.0-rc3, llvmorg-2.9.0-rc2, llvmorg-2.9.0-rc1, llvmorg-2.8.0, llvmorg-2.8.0-rc3, llvmorg-2.8.0-rc2, llvmorg-2.8.0-rc1, llvmorg-2.8.0-rc0, llvmorg-2.7.0, llvmorg-2.6.0, llvmorg-2.5.0, llvmorg-2.4.0, llvmorg-2.3.0, llvmorg-2.2.0, llvmorg-2.1.0, llvmorg-2.0.0, llvmorg-1.9.0, llvmorg-1.6.0, llvmorg-1.5.0, llvmorg-1.4.0, llvmorg-1.3.0 |
|
#
78f62e37 |
| 23-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Pull the LiveRange and LiveInterval classes out of LiveIntervals.h (which will soon be renamed) into their own file. The new file should not emit DEBUG output or have other side effects. The LiveIn
Pull the LiveRange and LiveInterval classes out of LiveIntervals.h (which 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
show more ...
|
#
53280cd2 |
| 23-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Improve comments a bit
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.
Improve comments a bit
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
show more ...
|
#
b549420c |
| 23-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Force coallescing of live ranges that have a single definition, even if they interfere. Because these intervals have a single definition, and one of them is a copy instruction, they are always safe
Force coallescing of live ranges that have a single definition, even if they 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
show more ...
|
#
6b2b26c6 |
| 22-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Fix broken -debug printing
llvm-svn: 15115
|
#
61546f3e |
| 22-Jul-2004 |
Alkis Evlogimenos <alkis@evlogimenos.com> |
Sorting is now handled by both linearscan and iterative scan so live intervals need not be sorted anymore. Removing this redundant step improves LiveIntervals running time by 5% on 176.gcc.
llvm-svn
Sorting is now handled by both linearscan and iterative scan so live intervals need not be sorted anymore. Removing this redundant step improves LiveIntervals running time by 5% on 176.gcc.
llvm-svn: 15106
show more ...
|
#
6ff60217 |
| 22-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
That funny 2-address lowering pass can also cause multiple definitions, fortunately, they are easy to handle if we know about them. This patch fixes some serious pessimization of code produced by th
That funny 2-address lowering pass can also cause multiple definitions, fortunately, they are easy to handle if we know about them. This patch fixes some serious pessimization of code produced by the linscan register allocator.
llvm-svn: 15092
show more ...
|
#
902dcf07 |
| 21-Jul-2004 |
Brian Gaeke <gaeke@uiuc.edu> |
These files don't need to include <iostream> since they include "Support/Debug.h".
llvm-svn: 15089
|
#
f616d832 |
| 20-Jul-2004 |
Alkis Evlogimenos <alkis@evlogimenos.com> |
Remove unneeded functor. LiveInterval has a < operator.
llvm-svn: 15031
|
#
15dfdb4e |
| 19-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Fix a bug that occurs when the last instruction in a range is dead
llvm-svn: 15005
|
#
c8fb1fb5 |
| 19-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
When joining intervals, join intervals in deeply nested loops first. This is a simple change, but seems to improve code a little. For example, on 256.bzip2, we went from 75.0s -> 73.33s (2% speedup
When joining intervals, join intervals in deeply nested loops first. This is a simple change, but seems to improve code a little. For example, on 256.bzip2, we went from 75.0s -> 73.33s (2% speedup).
llvm-svn: 15004
show more ...
|
#
d10d373c |
| 19-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Split joinIntervals into two methods
llvm-svn: 15003
|
#
aef6c2a3 |
| 19-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
There is no need to store the MBB along with the MI any more, we can now ask instructions for their parent.
llvm-svn: 14998
|
#
a74cf5a7 |
| 19-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Simplify the interface to LiveVariables::addVirtualRegister(Killed|Dead)
llvm-svn: 14997
|
#
a618e13c |
| 19-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Two changes, both very significant:
* vreg <-> vreg joining now works, enable it unconditionally when joining is enabled (which is the default). * Fix a serious pessimization of spill code where w
Two changes, both very significant:
* vreg <-> vreg joining now works, enable it unconditionally when joining is enabled (which is the default). * Fix a serious pessimization of spill code where we were saying that a spilled DEF operand was live into the subsequent instruction. This allows for substantially better code when spilling starts to happen.
llvm-svn: 14993
show more ...
|
#
c56f90d1 |
| 19-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
See comments. The live intervals were not coming out of the spiller in sorted order, causing the inactive list in the linearscan list to get unsorted, which basically fuxored everything up severely.
See comments. The live intervals were not coming out of the spiller in sorted order, causing the inactive list in the linearscan list to get unsorted, which basically fuxored everything up severely.
These seems to fix the joiner, so with more testing I will enable it by default.
llvm-svn: 14992
show more ...
|
#
4f2e2a3f |
| 19-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
remove the mbbi2mbbMap_, which was just keeping track of mbb order anyway.
Heavily refactor handleVirtualRegisterDef, adding comments and making it more efficient. It is also much easier to follow
remove the mbbi2mbbMap_, which was just keeping track of mbb order anyway.
Heavily refactor handleVirtualRegisterDef, adding comments and making it more efficient. It is also much easier to follow and convince ones self that it is correct :)
Add -debug output to the joine, showing the result of joining the intervals.
llvm-svn: 14989
show more ...
|
#
e62af95b |
| 17-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
It looks like physref->virtreg joining is working fine. Enable it by default but make virtreg->virtreg joining stay off by default
llvm-svn: 14916
|
#
7300963c |
| 09-Jul-2004 |
Alkis Evlogimenos <alkis@evlogimenos.com> |
Fix typo.
llvm-svn: 14720
|
#
132ece89 |
| 09-Jul-2004 |
Alkis Evlogimenos <alkis@evlogimenos.com> |
Improve code comments.
llvm-svn: 14719
|
#
8a1be030 |
| 07-Jul-2004 |
Alkis Evlogimenos <alkis@evlogimenos.com> |
Disable coalescing.
llvm-svn: 14655
|
#
3be9c5fb |
| 06-Jul-2004 |
Alkis Evlogimenos <alkis@evlogimenos.com> |
Do not crash when joining two intervals of registers of different classes: just ignore that move. Thanks to Vladimir Prus who found the bug!
llvm-svn: 14644
|