[LLVMdev] get ref to parent instruction

Óscar Fuentes ofv at wanadoo.es
Tue Jan 8 15:35:59 PST 2013

Eduardo <erocha.ssa at gmail.com> writes:

> How can I get a reference to an instruction if I have a reference to
> an operand? For example, let suppose I have a reference to the
> ConstantExpr "getelementptr inbounds" in the following instruction:
>   %4 = getelementptr i32* getelementptr inbounds ([8 x i32]*
> @__mem_grid_MOD_nnyp, i32 0, i32 0), i32 %3
> then, how can I get a reference to the GetElementPtrInst object?

A given Value instance can be an operand of multiple instructions.

> The reason I need that is because I want to change every instruction
> that uses certain variables (in the example above the
> __mem_grid_MOD_nnyp variable). The problem is that for the example I
> showed the actual user of the variable is a ConstantExpr object and
> not the GetElementPtrInst object.

You can traverse the User's of a Value with the iterators returned by
Value::use_begin and Value::use_end methods.

More information about the llvm-dev mailing list