From 2bf2aadd9a3bb356d39dc49772b010ad4c7e3b7c Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Wed, 4 Apr 2007 07:04:55 +0000 Subject: Trivially re-materializable instructions have spill weights that are half of what it would be otherwise. llvm-svn: 35658 --- llvm/lib/CodeGen/LiveIntervalAnalysis.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'llvm/lib/CodeGen/LiveIntervalAnalysis.cpp') diff --git a/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp b/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp index a01889a643e..3858a9868cf 100644 --- a/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp +++ b/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp @@ -164,13 +164,13 @@ bool LiveIntervals::runOnMachineFunction(MachineFunction &fn) { unsigned reg = rep(mop.getReg()); mii->getOperand(i).setReg(reg); - // If the definition instruction is re-materializable, its spill - // weight is zero. LiveInterval &RegInt = getInterval(reg); - if (!RegInt.remat) { - RegInt.weight += - (mop.isUse() + mop.isDef()) * pow(10.0F, (int)loopDepth); - } + float w = (mop.isUse()+mop.isDef()) * powf(10.0F, (float)loopDepth); + // If the definition instruction is re-materializable, its spill + // weight is half of what it would have been normally. + if (RegInt.remat) + w /= 2; + RegInt.weight += w; } } ++mii; -- cgit v1.2.3