diff --git a/lib/CodeGen/RegAllocLocal.cpp b/lib/CodeGen/RegAllocLocal.cpp
index 82691ba..4792452 100644
--- a/lib/CodeGen/RegAllocLocal.cpp
+++ b/lib/CodeGen/RegAllocLocal.cpp
@@ -575,8 +575,26 @@
       // them for later.  Also, we have to process these
       // _before_ processing the defs, since an instr
       // uses regs before it defs them.
-      if (MO.isReg() && MO.getReg() && MO.isUse())
+      if (MO.isReg() && MO.getReg() && MO.isUse()) {
         LastUseDef[MO.getReg()] = std::make_pair(I, i);
+        
+        
+        if (TargetRegisterInfo::isVirtualRegister(MO.getReg())) continue;
+        
+        const unsigned* subregs = TRI->getAliasSet(MO.getReg());
+        if (subregs) {
+          while (*subregs) {
+            DenseMap<unsigned, std::pair<MachineInstr*, unsigned> >::iterator
+              alias = LastUseDef.find(*subregs);
+            
+            if (alias != LastUseDef.end() &&
+                alias->second.first != I)
+              LastUseDef[*subregs] = std::make_pair(I, i);
+            
+            ++subregs;
+          }
+        }
+      }
     }
     
     for (unsigned i = 0, e = I->getNumOperands(); i != e; ++i) {
