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>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175540 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AllocationOrder.cpp

index 1d09d20f031e62ae8a759b5119cdb5ceded0cc34..3fa1f8ff206cdf0373efc6867e0e5ccbb724a9f8 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
 }