Get the address of ConstantDataArray

Hi all,
I have a global array declared as: table = internal constant [8 x [256 x i32]] …

At the moment I’m able to get the reference to table using Constant* g_var = cast(I.getOperand(0))->getInitializer(); ( please consider I to be a GetElementPtrInst object ).

Now I would like to understand how to get the address of table[2][3], for instance, considering that I have the g_var variable.

In addition, I was able to access to the value table[2][3] so for me would be also OK to have the address of that specific value once I already have access to the value.

Thanks
Alberto

Pointer arithmetic in LLVM is done using the getelementptr (GEP) instruction.

There’s a document which explains them [1], but I found this tutorial [2] from EuroLLVM 2019 was the first resource to explain it in a way I understood.

I hope this helps!

Sam

[1]: The Often Misunderstood GEP Instruction — LLVM 16.0.0git documentation
[2]: 2019 EuroLLVM Developers’ Meeting: V. Bridgers & F. Piovezan “LLVM IR Tutorial - Phis, GEPs ...” - YouTube

Thanks a lot Sam,
I’ll try to follow your suggestion and see if it works :slight_smile:

Thanks again