(original) (raw)


I am a little confused. Can anyone explain me in short? The definition of \`func\` is as below:

void func(int var\_addr) {
printf("\[instr\]: Global variable at address 0x%x\\n", var\_addr);
}

I want to insert a call to \`func\` just before the store instruction with the address \`x\` of global variable \`g\` as parameter.


On 28 April 2017 at 14:34, Tim Northover <t.p.northover@gmail.com> wrote:
On 28 April 2017 at 14:32, Jonathan Roelofs via llvm-dev
<llvm-dev@lists.llvm.org> wrote:
\> You need a load instruction since your function takes an i32, not an
\> i32\*.... A global's value in llvm is its address, not the numeric data it
\> contains.

I suspect he actually wants to make his function take an "i8\*" and
bitcast his pointer to that type before calling it. \[\*\]

Tim.

\[\*\] Keeping it as an i32/i64 and using ptrtoint instead of bitcast
would also work, but be less portable and elegant.



--

Thanks & Regards,

Dipanjan