def-use chain for Instruction

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(*i);
errs() << “\t\t” << *vi << “\n”;
}
}

return false;
}

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

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

Thanks

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.

Disassemble the LLVM bitcode for the file and see what the function looks like after optimization. It’s possible that the optimizations removed all the computation.

– John T.