c – LLVM,获取内部结构的偏移量

我想在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()方法,可以执行您想要的操作.

上一篇:手动编译一个windows下64位的LLVM3.3(clang3.3)


下一篇:在2018年编写LLVM遍——前言