[LLVMdev] size of const_ptr for array index
Alexander Poddey
alexander.poddey at gmx.net
Mon Mar 16 12:44:46 PDT 2015
Hi all,
when e.g. accessing a global variable residing in a structure, the c++API
code looks like:
std::vector<Constant*> const_ptr_183_indices;
const_ptr_183_indices.push_back(const_int32_172);
const_ptr_183_indices.push_back(const_int32_184);
const_ptr_183_indices.push_back(const_int64_175);
Constant* const_ptr_183 = ConstantExpr::getGetElementPtr(gvar_struct_foo,
const_ptr_183_indices);
the struct could be
struct stest {
double age;
double darray[3];
}
The indices for accessing 'age' would be
0 (32bit)
0 (32bit).
For an element of the darray, one however needs
0 (32bit)
1 (32bit)
0-2 (64bit)
The same for indices of vectors.
The question:
Can I at runtime determine (how?) which size I have to use per case?
I made some tests but could not figure it out.
So for now (at my architecture) it seems hardcoding 32 bit as default, and
64bit for indices (of arrays and vectors) works. But this is not portable.
Thanks
Alexander
More information about the llvm-dev
mailing list