get the address in memory where an instruction lives

i want to get the address in memory of an instruction pointer and use it as a key in my tables.

i iterate over the instructions in LLVM IR like this:
for (Module::iterator fi = Mod->begin(), fi_end = Mod->end(); fi != fi_end; ++fi) {
for (inst_iterator I = inst_begin(fi), E = inst_end(fi); I != E; ++I) {

Instruction *ii = dyn_cast(&*I);
errs() << &ii << “\n”;

but i get the same address for every instruction, eg 0xbfc979fc

Why is this happening and how can i get the rigth address?



You're printing the address of a variable on the stack. Try removing the '&' before 'ii'.

- Ben

You’re getting the same address because you’re printing the address of the variable that holds the pointer to the instruction (as opposed to the pointer itself). In other words, you want to print ii and not &ii. – John T.