Implement PPC counter loops as a late IR-level pass
[oota-llvm.git] / lib / Target / PowerPC / PPCRegisterInfo.cpp
index 2be6324fd7be3dea7702e750d70e19e213687ab2..7a74f3d459a94e81605565b72b44a3110986ce56 100644 (file)
@@ -136,6 +136,11 @@ BitVector PPCRegisterInfo::getReservedRegs(const MachineFunction &MF) const {
   Reserved.set(PPC::FP);
   Reserved.set(PPC::FP8);
 
+  // The counter registers must be reserved so that counter-based loops can
+  // be correctly formed (and the mtctr instructions are not DCE'd).
+  Reserved.set(PPC::CTR);
+  Reserved.set(PPC::CTR8);
+
   Reserved.set(PPC::R1);
   Reserved.set(PPC::LR);
   Reserved.set(PPC::LR8);