[LLVMdev] def-use chain for Instruction

neda 8664 neda8664 at gmail.com
Sat May 7 09:14:44 PDT 2011


Hello all,

I am a LLVM newer who want to obtain the use-def chain for all instruction
of a sample code, for this purpose i use the following code.

///////////////sample code://///////////////////////
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

#define ARRAY_SIZE 5


int main() {
 int x, y, holder;
 int k,z,f,i;
  z=0;
  f=0;
  k=0;

  for(x = 0; x < ARRAY_SIZE; x++)
    for(y = 0; y < ARRAY_SIZE-1; y++)
      if(x+y>10) {
        holder = x+y;
        k=z+1;
    f=k+x;
    if (i>k)
        i=i+1;
      }
// return 1;

}

////////////////////////pass code://///////////////////////////////
  virtual bool runOnFunction(Function &F) {
    std::vector<Instruction*> worklist;

    for(inst_iterator I = inst_begin(F), E = inst_end(F); I != E; ++I){
                worklist.push_back(&*I);
            }


            for(std::vector<Instruction*>::iterator iter = worklist.begin();
iter != worklist.end(); ++iter){
                Instruction* instr = *iter;
                errs() << "def: " <<*instr << "\n";
                for(Value::use_iterator i = instr->use_begin(), ie =
instr->use_end(); i!=ie; ++i){
                    Value *v = *i;
                    Instruction *vi = dyn_cast<Instruction>(*i);
                    errs() << "\t\t" << *vi << "\n";
                }
            }

    return false;
    }

//////////////output///////////////
def:   ret void


but my output isn't my aim, can anyone help me?

Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110507/b987ae10/attachment.html>


More information about the llvm-dev mailing list