[llvm-commits] [llvm] r70351 - /llvm/trunk/lib/CodeGen/RegAllocLinearScan.cpp
Evan Cheng
evan.cheng at apple.com
Tue Apr 28 17:42:27 PDT 2009
Author: evancheng
Date: Tue Apr 28 19:42:27 2009
New Revision: 70351
URL: http://llvm.org/viewvc/llvm-project?rev=70351&view=rev
Log:
Determine allocation 'preference' with right register class. I haven't seen this changing codegen so no test case.
Modified:
llvm/trunk/lib/CodeGen/RegAllocLinearScan.cpp
Modified: llvm/trunk/lib/CodeGen/RegAllocLinearScan.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegAllocLinearScan.cpp?rev=70351&r1=70350&r2=70351&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/RegAllocLinearScan.cpp (original)
+++ llvm/trunk/lib/CodeGen/RegAllocLinearScan.cpp Tue Apr 28 19:42:27 2009
@@ -799,8 +799,14 @@
Reg = SrcReg;
else if (vrm_->isAssignedReg(SrcReg))
Reg = vrm_->getPhys(SrcReg);
- if (Reg && allocatableRegs_[Reg] && RC->contains(Reg))
- cur->preference = Reg;
+ if (Reg) {
+ if (SrcSubReg)
+ Reg = tri_->getSubReg(Reg, SrcSubReg);
+ if (DstSubReg)
+ Reg = tri_->getMatchingSuperReg(Reg, DstSubReg, RC);
+ if (Reg && allocatableRegs_[Reg] && RC->contains(Reg))
+ cur->preference = Reg;
+ }
}
}
}
@@ -1265,14 +1271,10 @@
// If copy coalescer has assigned a "preferred" register, check if it's
// available first.
if (cur->preference) {
+ DOUT << "(preferred: " << tri_->getName(cur->preference) << ") ";
if (prt_->isRegAvail(cur->preference) &&
- RC->contains(cur->preference)) {
- DOUT << "\t\tassigned the preferred register: "
- << tri_->getName(cur->preference) << "\n";
+ RC->contains(cur->preference))
return cur->preference;
- } else
- DOUT << "\t\tunable to assign the preferred register: "
- << tri_->getName(cur->preference) << "\n";
}
if (!DowngradedRegs.empty()) {
More information about the llvm-commits
mailing list