mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-17 20:23:59 +00:00
Build the Hopfield network incrementally when splitting global live ranges.
It is common for large live ranges to have few basic blocks with register uses and many live-through blocks without any uses. This approach grows the Hopfield network incrementally around the use blocks, completely avoiding checking interference for some through blocks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129188 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -53,6 +53,19 @@ bool EdgeBundles::runOnMachineFunction(MachineFunction &mf) {
|
||||
EC.compress();
|
||||
if (ViewEdgeBundles)
|
||||
view();
|
||||
|
||||
// Compute the reverse mapping.
|
||||
Blocks.clear();
|
||||
Blocks.resize(getNumBundles());
|
||||
|
||||
for (unsigned i = 0, e = MF->getNumBlockIDs(); i != e; ++i) {
|
||||
unsigned b0 = getBundle(i, 0);
|
||||
unsigned b1 = getBundle(i, 1);
|
||||
Blocks[b0].push_back(i);
|
||||
if (b1 != b0)
|
||||
Blocks[b1].push_back(i);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -82,5 +95,3 @@ raw_ostream &llvm::WriteGraph(raw_ostream &O, const EdgeBundles &G,
|
||||
O << "}\n";
|
||||
return O;
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user