我想在LLVM中使用每个struct元素的细粒度偏移量.例如:
struct A{
int a;
int b;
};
struct B{
int c;
struct A sa;
};
struct B s;
对于struct B,我想枚举其中的每个元素,即:offset(s.c)= 0,offset(s.sa.a)= 4,offset(s.sa.b)= 8.如何在我的pass而不是dump()中获取此信息(可以使用哪种API?)?
解决方法:
使用Module::getDataLayout获取DataLayout对象,它可以为您提供一个返回DataLayout::getStructLayout的StructLayout.StructLayout具有getElementOffset()方法,可以执行您想要的操作.