Assert that the target provided hints are in the allocation order.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 19 Feb 2013 18:41:01 +0000 (18:41 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 19 Feb 2013 18:41:01 +0000 (18:41 +0000)
Target implementations of getRegAllocationHints() should use the
provided allocation order, and they can never return hints outside the
order. This is already documented in TargetRegisterInfo.h.

<rdar://problem/13240556>

llvm-svn: 175540

llvm/lib/CodeGen/AllocationOrder.cpp

index 1d09d20..3fa1f8f 100644 (file)
@@ -44,4 +44,9 @@ AllocationOrder::AllocationOrder(unsigned VirtReg,
       dbgs() << '\n';
     }
   });
+#ifndef NDEBUG
+  for (unsigned I = 0, E = Hints.size(); I != E; ++I)
+    assert(std::find(Order.begin(), Order.end(), Hints[I]) != Order.end() &&
+           "Target hint is outside allocation order.");
+#endif
 }