如何在LLVM IR中打印从CPP类编译的结构类型的详细类型?

时间:2020-10-27 11:45:32

标签: clang llvm llvm-ir

将C ++中的类编译为LLVM位代码后,我使用llvm-disopt -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
....

1 个答案:

答案 0 :(得分:1)

这里没有隐藏任何东西。

您的课程只包含一个虚函数。因此,相应的结构应该有一个存放函数指针的地方。

相关问题