I am going to build a Pass/es that verify OpenMP code.
When we compile an OpenMP program we give the option “-fopenmp” to clang.
In this way the LLVM IR code obtained will reflect also the “#pragma” keywords in the code, let’s call it "OpenMP LLVM IR".
In my Pass/es before obtaining the OpenMP LLVM IR, I need to do some operation in the LLVM IR, that is the IR code obtained compiling the program without the flag “-fopenmp”.
So, to be clear my working flow would be:
- Run MyPass with in input the LLVM IR
- Do some operation on it and get results
- Run MyPass again or a different one (MyPass2) with in input the OpenMP LLVM IR and the results of the previous operations
- Do other operations
Would it be possible doing something like this? Do you have any idea how should I proceed?
I hope this is clear and you can give me some suggestion.