diff options
Diffstat (limited to 'lib/Analysis/LiveVar/LiveVarSet.cpp')
-rw-r--r-- | lib/Analysis/LiveVar/LiveVarSet.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/Analysis/LiveVar/LiveVarSet.cpp b/lib/Analysis/LiveVar/LiveVarSet.cpp new file mode 100644 index 0000000000..c893817549 --- /dev/null +++ b/lib/Analysis/LiveVar/LiveVarSet.cpp @@ -0,0 +1,20 @@ +#include "llvm/Analysis/LiveVar/LiveVarSet.h" + + +// This function applies an instruction to a live var set (accepts OutSet) and +// makes necessary changes to it (produces InSet) + +void LiveVarSet::applyTranferFuncForInst(const Instruction *const Inst) +{ + + if( Inst->isDefinition() ) { // add to Defs iff this instr is a definition + remove(Inst); // this definition kills any uses + } + Instruction::op_const_iterator OpI = Inst->op_begin(); // get operand iterat + + for( ; OpI != Inst->op_end() ; OpI++) { // iterate over operands + if ( ((*OpI)->getType())->isLabelType()) continue; // don't process labels + add( *OpI ); // An operand is a use - so add to use set + } + +} |