Anti-dependency breaking needs to be careful not to use reserved regs
[oota-llvm.git] / lib / CodeGen / AggressiveAntiDepBreaker.cpp
index 62e40e9636bb33c3dc006516d9ffddaf8b307061..5a634d6ccb0182c02213b006df704d21e33b4373 100644 (file)
@@ -654,6 +654,8 @@ bool AggressiveAntiDepBreaker::FindSuitableFreeRegisters(
     if (R == RB) R = RE;
     --R;
     const unsigned NewSuperReg = *R;
+    // Don't consider non-allocatable registers
+    if (!AllocatableSet.test(NewSuperReg)) continue;
     // Don't replace a register with itself.
     if (NewSuperReg == SuperReg) continue;