使用clang和libclang生成优化的AST

使用clang和libclang生成优化的AST,clang,compiler-optimization,libclang,Clang,Compiler Optimization,Libclang,我想对源文件应用铿锵优化,然后生成其AST。 我试图传递-O3标志,但似乎它被忽略了 例如,我假设对于这个程序片段: #include <stdio.h> int main(void) { int a = 5 + 5; for (int i = 0; i < 10; i++) { } printf("%i\n", a); return 0; } #包括 内部主(空){ INTA=5+5; 对于(int i=0;i

我想对源文件应用铿锵优化,然后生成其AST。 我试图传递
-O3
标志,但似乎它被忽略了

例如,我假设对于这个程序片段:

#include <stdio.h>
int main(void) {
  int a = 5 + 5;
  for (int i = 0; i < 10; i++) { }
  printf("%i\n", a);
  return 0;
}
#包括
内部主(空){
INTA=5+5;
对于(int i=0;i<10;i++){
printf(“%i\n”,a);
返回0;
}
可以应用许多优化,例如删除for循环,将5+5转换为10

当我使用
clang-O3-Xclang-AST dump-fsyntax-only a.c
转储AST时,我得到了相同的AST,没有优化标志


我的目标是创建一个通过标志优化的TranslationUnit。

也许优化不会导致另一个AST?看看你要找的是不是真的。

不是真的。我要找的是一个优化的AST。首先,程序从AST降低到IR。其次,对IR进行优化。没有“优化AST”这样的东西。