Compiler construction 如何使用clang解析AST openMP

Compiler construction 如何使用clang解析AST openMP,compiler-construction,clang,llvm,openmp,Compiler Construction,Clang,Llvm,Openmp,我对编译器是个新手,现在开始使用clang。我想用铿锵解析openmp pragma行,我的问题是这可能吗?事实上,我看到了很多关于支持openmp的演示,但是我找不到任何关于如何解析的示例?如果你有或知道有用的例子,你能寄给我吗 非常感谢看一看。它支持OpenMP并基于llvm。Polly生成带有GOMP库调用注释的LLVM IR,编写自己的过程来处理这些调用很容易 如果您确实需要前端中的pragma信息,则需要深入研究代码以获得pragma的句柄。在任何情况下,您都不需要编写自己的解析器 关

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

非常感谢

看一看。它支持OpenMP并基于llvm。Polly生成带有GOMP库调用注释的LLVM IR,编写自己的过程来处理这些调用很容易

如果您确实需要前端中的pragma信息,则需要深入研究代码以获得pragma的句柄。在任何情况下,您都不需要编写自己的解析器


关于Polly如何处理OpenMP pragmas的详细信息可以在这里找到。

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

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

clang -Xclang -ast-dump -Xpreprocessor -fopenmp yoursourcefile.c
我可以在ast中看到omp语句

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

当前版本的
clang
不支持OpenMP。@HristoIliev真的吗?呃,我不知道。但是我看到了很多关于openmp的代码片段。如果是这样,我还可以使用您推荐的一些clang插件进行解析吗?英特尔正试图将
clang
与新开源的英特尔OpenMP运行时结合起来:请参阅。还有其他一些项目正在开发支持OpenMP的LLVM编译器。不幸的是,我不是
clang
的用户,不能向您推荐这样的前端。@hristoilev谢谢您的回复。