[llvm-dev] pass invalidation

Yuxi Chen via llvm-dev llvm-dev at lists.llvm.org
Sat Jun 18 22:44:01 PDT 2016


Hi All,

When I use llvm, I encounter a problem like "unable to schedule pass A required by C"
I investigated deeper. It's like:
I have three passes, say A, B, C(all are on function level)
A would modify IR code. (change instruction order)

For pass B,
I would use the result of pass A, I use addRequired<B>(), and &getAnalysis<B>(), it works.

void getAnalysisUsage(AU){
AU.addRequired<A>();
}


For pass C, it will use the results of pass A and B.
I use the way as used for pass B, but it failed, even for LoopInfo analysis pass(which is the built-in analysis pass).
void getAnalysisUsage(AU){
AU.addRequired<A>();
AU.addRequired<B>();
}


It seems because A would modify IR code, so for pass C, I need first load pass A then pass B, otherwise it will be invalidated.
However, when I change the using order, I still got error "unable to schedule pass A required by C".

Does anyone encounter the same problem before and have a solution?
Any help is appreciated.

Best,
Yuxi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160619/974a88e1/attachment.html>


More information about the llvm-dev mailing list