Fix a recent regression in Applications/sgefa that Alkis pointed out to me.
authorChris Lattner <sabre@nondot.org>
Wed, 16 Jun 2004 06:57:29 +0000 (06:57 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 16 Jun 2004 06:57:29 +0000 (06:57 +0000)
The vector may actually be empty if the register that we are marking as
recently used is not actually allocatable.  This happens for physical registers
that are not allocatable, like the ST(x) registers on X86.

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

lib/CodeGen/RegAllocLocal.cpp

index d0df2703c25fbfc5154667e0680cff8e8b160d2a..4c7ccdf8758db9bc0e81ab278e890179e698848f 100644 (file)
@@ -93,8 +93,8 @@ namespace {
     }
 
     void MarkPhysRegRecentlyUsed(unsigned Reg) {
-      assert(!PhysRegsUseOrder.empty() && "No registers used!");
-      if (PhysRegsUseOrder.back() == Reg) return;  // Already most recently used
+      if(PhysRegsUseOrder.empty() ||
+         PhysRegsUseOrder.back() == Reg) return;  // Already most recently used
 
       for (unsigned i = PhysRegsUseOrder.size(); i != 0; --i)
         if (areRegsEqual(Reg, PhysRegsUseOrder[i-1])) {