[llvm-dev] How to get the address of a global variable in LLVM?

Dipanjan Das via llvm-dev llvm-dev at lists.llvm.org
Fri Apr 28 14:38:27 PDT 2017


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 at gmail.com> wrote:

> On 28 April 2017 at 14:32, Jonathan Roelofs via llvm-dev
> <llvm-dev at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170428/cd605c04/attachment.html>


More information about the llvm-dev mailing list