mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Recalculate the spill weight and allocation hint for virtual registers created
during live range splitting. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110686 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
dc0830947a
commit
08e93b14c3
@ -25,11 +25,11 @@ namespace llvm {
|
||||
class VirtRegAuxInfo {
|
||||
MachineFunction &mf_;
|
||||
LiveIntervals &lis_;
|
||||
MachineLoopInfo &loops_;
|
||||
const MachineLoopInfo &loops_;
|
||||
DenseMap<unsigned, float> hint_;
|
||||
public:
|
||||
VirtRegAuxInfo(MachineFunction &mf, LiveIntervals &lis,
|
||||
MachineLoopInfo &loops) :
|
||||
const MachineLoopInfo &loops) :
|
||||
mf_(mf), lis_(lis), loops_(loops) {}
|
||||
|
||||
/// CalculateRegClass - recompute the register class for li from its uses.
|
||||
|
@ -15,6 +15,7 @@
|
||||
#define DEBUG_TYPE "splitter"
|
||||
#include "SplitKit.h"
|
||||
#include "VirtRegMap.h"
|
||||
#include "llvm/CodeGen/CalcSpillWeights.h"
|
||||
#include "llvm/CodeGen/LiveIntervalAnalysis.h"
|
||||
#include "llvm/CodeGen/MachineFunctionPass.h"
|
||||
#include "llvm/CodeGen/MachineInstrBuilder.h"
|
||||
@ -566,8 +567,12 @@ void SplitEditor::rewrite() {
|
||||
intervals_.push_back(dupli_);
|
||||
}
|
||||
|
||||
// FIXME: *Calculate spill weights, allocation hints, and register classes for
|
||||
// firstInterval..
|
||||
// Calculate spill weight and allocation hints for new intervals.
|
||||
VirtRegAuxInfo vrai(vrm_.getMachineFunction(), lis_, sa_.loops_);
|
||||
for (unsigned i = firstInterval, e = intervals_.size(); i != e; ++i) {
|
||||
LiveInterval &li = *intervals_[i];
|
||||
vrai.CalculateWeightAndHint(li);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -31,11 +31,13 @@ class VNInfo;
|
||||
/// SplitAnalysis - Analyze a LiveInterval, looking for live range splitting
|
||||
/// opportunities.
|
||||
class SplitAnalysis {
|
||||
public:
|
||||
const MachineFunction &mf_;
|
||||
const LiveIntervals &lis_;
|
||||
const MachineLoopInfo &loops_;
|
||||
const TargetInstrInfo &tii_;
|
||||
|
||||
private:
|
||||
// Current live interval.
|
||||
const LiveInterval *curli_;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user