[LLVMdev] [cfe-dev][Openmp-dev] Clang Plugin to analyze OpenMP AST

Simone Atzeni simone.at at gmail.com
Tue Dec 9 07:53:03 PST 2014


I am writing a plugin to get information about the OpenMP constructs from the AST.
I am basically writing a “RecursiveASTVisitor” and I am trying to find the OpenMP statement and get information like filename and line of code.

When I am visiting recursively each statement I have my own switch on the “StmtClass” and for now I am focusing on “OMPParallelForDirectiveClass”.
In my understanding, once I find the beginning of the OpenMP statement, its children are all the statement inside the OpenMP construct.
I was wondering if there is a way to know the lines of code where the OpenMP construct starts and where it finishes (in terms of lines of code), and then get the the same information for their children (lines of code of the other statement in the OpenMP construct).

In my example, once I find the OMPParallelForDirectiveClass statement I am trying to print line of code using the 3 functions getSpellingLineNumber, getExpansionLineNumber and get PresumedLineNumber using the location start and location end, however the numbers are all equal.
Also, I am looping into its children and the last statement that I got is that one before the closed bracket of the OpenMP constructs. Can I suppose that "the line of code of the last statement + 1” is the end of the OpenMP construct? What if there are new empty line?

Hope this is clear and you can give me some advice.


More information about the llvm-dev mailing list