获取非基本类型的内存访问大小

时间:2018-02-02 08:34:13

标签: compiler-construction clang llvm llvm-ir

我正在尝试使用

获取内存访问(加载)的大小
dyn_cast<LoadInst>(Inst)->getType()->getPrimitiveSizeinBits()

适用于大多数情况。

但是,对于像

这样的加载指令
%18 = load i8*, i8** %11, align 8, !tbaa !10

我们有双星(**)指针访问,这样的方法只返回值0.我想知道是否有任何方法可以让我在这种情况下得到加载的大小?

提前致谢,
汤姆

2 个答案:

答案 0 :(得分:0)

如果你想要原语的类型而不管有多少个间接级别, 你可以这样做:

{{1}}

答案 1 :(得分:0)

指针大小与目标有关,因此您需要浏览Module的{​​{1}}。您可能需要M.getDataLayout().getTypeAllocSizeInBits(Ty)之类的内容。