[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