将C ++中的类编译为LLVM位代码后,我使用llvm-dis
或opt -S
来显示文本IR,但是该类的打印类型始终是:%class.A = type { i32 (...)** }
>
有人知道如何打印...
当前隐藏的详细类型吗?
这是我使用的C ++代码:
#include <stdio.h>
#include <stdlib.h>
class A {
public:
virtual int foo(int i) {
return i + 2;
}
};
int main() {
A *a = new A;
int x = a->foo(1);
return 0;
}
这是输出LLVM IR的一部分:
; ModuleID = 'logs/abstract.bc'
source_filename = "abstract.cpp"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"
%class.A = type { i32 (...)** } // How to make ... become more detailed?
$_ZN1AC2Ev = comdat any
$_ZN1A3fooEi = comdat any
$_ZN1A3barEi = comdat any
$_ZTV1A = comdat any
$_ZTS1A = comdat any
$_ZTI1A = comdat any
....
答案 0 :(得分:1)
这里没有隐藏任何东西。
您的课程只包含一个虚函数。因此,相应的结构应该有一个存放函数指针的地方。