如何将clang .ast文件转换为ir或位码文件?

时间:2019-04-18 07:10:14

标签: clang abstract-syntax-tree llvm-clang

为我的英语不好道歉。

[root@xxxx] ~
❯ clang -emit-ast aa.c

[root@xxxx] ~
❯ xxd aa.ast | head
00000000: 4350 4348 0108 0000 ce0a 0000 07c1 b3d0  CPCH............
00000010: 8cc2 2bb8 022d c8c2 2bb0 c22f 8802 2bbc  ..+..-..+../..+.
00000020: c228 acc2 4312 b442 29d0 4228 9042 28d0  .(..C..B).B(.B(.
00000030: 4228 3c30 472b bc02 29d4 022b 94c2 2fb8  B(<0G+..)..+../.

  • 我可以使用-emit-ast选项获取cast ast文件
  • 我想将其转换为llvm ir。
  • 但是我找不到任何接口来解决它。

有人建议吗?

1 个答案:

答案 0 :(得分:0)

可以使用Clang AST文件代替源文件,因此以下代码有效:

// main.cpp
#include <iostream>

int main() {
  std::cout << "Hello, world!" << std::endl;
  return 0;
}
> clang++ -emit-ast main.cpp -o a.ast
> clang++ a.ast -o a.out
> ./a.out
Hello, world!

回答您的问题:

> clang -emit-llvm -c aa.ast