如何用clang解析AST openMP

时间:2013-08-10 12:18:20

标签: compiler-construction clang llvm openmp

我对编译器这么新,现在开始铿锵有力。我想用clang解析openmp pragma行,我的问题是可能吗?事实上,我看到很多关于支持openmp的演示,但是我找不到任何关于如何解析的例子?如果你有或知道有用的例子,你能寄给我吗?

非常感谢

2 个答案:

答案 0 :(得分:2)

看看Polly。它支持OpenMP并基于llvm。 Polly生成使用GOMP库调用注释的LLVM IR,并且很容易编写自己的传递来获取这些调用的句柄。

如果你真的需要前端的pragma信息,你需要深入研究代码来处理pragma。在任何情况下,您都不需要编写自己的解析器。

有关Polly如何处理OpenMP pragma的详细信息,请参阅此document

答案 1 :(得分:0)

我终于找到了。目前Clang只支持omp parallel指令,而且几乎没有子句:)

为了使用它,我使用了以下参数:

clang -Xclang -ast-dump -Xpreprocessor -fopenmp yoursourcefile.c

我可以在ast中看到omp声明。

OMPParallelDirective 0xd09a09c <line:6:13, col:25>
-CapturedStmt 0xd09a088 <line:7:5, col:18>