mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
Revert "CalculateSpillWeights does not need to be a pass"
Temporarily revert my previous commit until I understand why it breaks 3 target tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194272 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -22,21 +22,38 @@
|
||||
#include "llvm/Target/TargetRegisterInfo.h"
|
||||
using namespace llvm;
|
||||
|
||||
void llvm::calculateSpillWeights(LiveIntervals &LIS,
|
||||
MachineFunction &MF,
|
||||
const MachineLoopInfo &MLI,
|
||||
const MachineBlockFrequencyInfo &MBFI) {
|
||||
char CalculateSpillWeights::ID = 0;
|
||||
INITIALIZE_PASS_BEGIN(CalculateSpillWeights, "calcspillweights",
|
||||
"Calculate spill weights", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(LiveIntervals)
|
||||
INITIALIZE_PASS_DEPENDENCY(MachineLoopInfo)
|
||||
INITIALIZE_PASS_END(CalculateSpillWeights, "calcspillweights",
|
||||
"Calculate spill weights", false, false)
|
||||
|
||||
void CalculateSpillWeights::getAnalysisUsage(AnalysisUsage &au) const {
|
||||
au.addRequired<LiveIntervals>();
|
||||
au.addRequired<MachineBlockFrequencyInfo>();
|
||||
au.addRequired<MachineLoopInfo>();
|
||||
au.setPreservesAll();
|
||||
MachineFunctionPass::getAnalysisUsage(au);
|
||||
}
|
||||
|
||||
bool CalculateSpillWeights::runOnMachineFunction(MachineFunction &MF) {
|
||||
|
||||
DEBUG(dbgs() << "********** Compute Spill Weights **********\n"
|
||||
<< "********** Function: " << MF.getName() << '\n');
|
||||
|
||||
LiveIntervals &LIS = getAnalysis<LiveIntervals>();
|
||||
MachineRegisterInfo &MRI = MF.getRegInfo();
|
||||
VirtRegAuxInfo VRAI(MF, LIS, MLI, MBFI);
|
||||
VirtRegAuxInfo VRAI(MF, LIS, getAnalysis<MachineLoopInfo>(),
|
||||
getAnalysis<MachineBlockFrequencyInfo>());
|
||||
for (unsigned i = 0, e = MRI.getNumVirtRegs(); i != e; ++i) {
|
||||
unsigned Reg = TargetRegisterInfo::index2VirtReg(i);
|
||||
if (MRI.reg_nodbg_empty(Reg))
|
||||
continue;
|
||||
VRAI.CalculateWeightAndHint(LIS.getInterval(Reg));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Return the preferred allocation register for reg, given a COPY instruction.
|
||||
|
||||
Reference in New Issue
Block a user