2012-08-11 230 views
2

是否有任何帮助方法来遍历由LLVM编译器为C代码生成的AST,基本块等?使用LLVM遍历AST

+0

文档说什么? – 2012-08-11 11:38:44

+1

如果你在问关于llvm-c的接口,比看看LLVMGetBasicBlocks,LLVMGetFirstInstruction,LLVMGetBasicBlockTerminator等等。如果你是在C++之后 - 看到任何一个灵感来源的LLVM通路。 – 2012-08-11 20:01:56

回答

1

如果您尝试加载模块(从.c文件编译的.bc文件的clang -emit-llvm)并遍历其功能,基本块等,则可能需要从llvm::Module class开始。它具有遍历全局变量和函数的功能。然后llvm::Function class具有迭代基本块的功能。然后llvm::BasicBlock class具有遍历指令的功能。或者如果您愿意,您可以遍历由Clang创建的AST结构。以下是一些示例代码:http://eli.thegreenplace.net/2012/06/08/basic-source-to-source-transformation-with-clang/