LLVMers,
I have a traversal plan which needs to visit certain types of Functions. For each instruction in such functions, I will need to know:
- is it located inside a loop
- if yes, what level of loop nest it is currently in.
So on the highest level, it should be a FunctionPass. However, in order to identify loops and loop-nest levels, it should also be a LoopPass.
Is there a reasonably simple way to identify loop(s) within a function under FunctionPass?
(Any existing LLVM code that I can take a look?)
OR
Is it possible to intermix different types of LLVM Passes?
E.g.
class MyPass: public FunctionPass, public LoopPass{
…
public:
bool runOnFunction(…);
bool runOnLoop(…);
…
};
Does this make any sense?
I haven’t seem to find any existing LLVM pass under such uses.
Thank you very much
Chuck