前
边介绍了几节Clang AST,包括AST的读取,Rewriter,AST的插入等,这里想从AST到IR的转换,介绍一点Clang源码的内容。
前边已经提到了想打印AST树内容的话,需要使用clang -fsyntax-only -Xclang -ast-dump 命令来进行。对于llvm各种文件格式的转换,有一个图说的比较清楚,内容来源见水印。
我们使用的源码还是以上次使用的view.cpp
1 int foo(int a, int b, int *c) { 2 int ret = 0; 3 if (a > b) { 4 ret = a; 5 } else { 6 ret = b; 7 } 8 for (int temp = 0; temp < 100; ++temp) { 9 *c = (*c + temp); 10 } 11 return ret; 12 } 13 14 15 int main() { 16 int a = 1, b = 2; 17 int c = 0; 18 int d = foo(a, b, &c); 19 return 0; 20 }