【问题标题】:How to tranform clang .ast file to ir or bitcode file?如何将 clang .ast 文件转换为 ir 或 bitcode 文件?
【发布时间】:2019-04-18 07:10:13
【问题描述】:

为我糟糕的英语道歉。

[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 选项获取 clang ast 文件
  • 我想将其转换为 llvm ir。
  • 但是我找不到任何接口来解决它。

有人建议吗??

【问题讨论】:

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


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-18
      • 1970-01-01
      • 2021-07-30
      相关资源
      最近更新 更多