From b8354a8e4f2cd93fa5f82a77b300f1d327354816 Mon Sep 17 00:00:00 2001
From: Ruchira Sasanka <sasanka@students.uiuc.edu>
Date: Mon, 15 Oct 2001 16:58:50 +0000
Subject: --added support for implicit operands

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@832 91177308-0d34-0410-b5e6-96231b3b80d8
---
 lib/Analysis/LiveVar/LiveVarSet.cpp | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

(limited to 'lib/Analysis')

diff --git a/lib/Analysis/LiveVar/LiveVarSet.cpp b/lib/Analysis/LiveVar/LiveVarSet.cpp
index 07dc128..1ca65f0 100644
--- a/lib/Analysis/LiveVar/LiveVarSet.cpp
+++ b/lib/Analysis/LiveVar/LiveVarSet.cpp
@@ -14,27 +14,34 @@ void LiveVarSet::applyTranferFuncForMInst(const MachineInstr *const MInst)
 
   for( MachineInstr::val_op_const_iterator OpI(MInst); !OpI.done() ; OpI++) {
 
-    if( OpI.isDef() ) {     // kill only if this operand is a def
+    if( OpI.isDef() )      // kill only if this operand is a def
          remove(*OpI);        // this definition kills any uses
-    }
+  }
 
+  // do for implicit operands as well
+  for( unsigned i=0; i < MInst->getNumImplicitRefs(); ++i) {
+    if( MInst->implicitRefIsDefined(i) )
+      remove( MInst->getImplicitRef(i) );
   }
 
+
   for( MachineInstr::val_op_const_iterator OpI(MInst); !OpI.done() ; OpI++) {
 
     if ( ((*OpI)->getType())->isLabelType()) continue; // don't process labels
-
-    if( ! OpI.isDef() ) {     // add only if this operand is a use
+    
+    if( ! OpI.isDef() )      // add only if this operand is a use
        add( *OpI );            // An operand is a use - so add to use set
-    }
   }
-}
-
-  
-
 
+  // do for implicit operands as well
+  for( unsigned i=0; i < MInst->getNumImplicitRefs(); ++i) {
+    if(  ! MInst->implicitRefIsDefined(i) )
+      add( MInst->getImplicitRef(i) );
+  }
 
+}
 
+  
 
 #if 0
 void LiveVarSet::applyTranferFuncForInst(const Instruction *const Inst) 
-- 
cgit v1.1