<div dir="ltr"><div>Dear llvm developers, </div><div><br></div><div>As an llvm beginner I have a simple question. Would a callee pass be executed at the very beginning, if i use AU.addRequired<>() grammar in my upper level pass?  If yes, what can i do to stop it and make each callee pass can be executed strictly by myself(e.g. using getAnalysis<>)?</div><div><br></div><div>I paste a piece of my code as follows, the two callee passes: DataDependencyGraph and ControlDependencyGraph are always called before I i use getAnalysis<> explicitly, which leads that my initialization work cannot be done correctly.</div><div><br></div><div>Thanks very much!</div><div><br></div><div>code:</div><div><br></div><div>bool ProgramDependencyGraph::runOnModule(Module &M)</div><div>{</div><div>  for(Module::iterator F = M.begin(), E = M.end(); F != E; ++F)</div><div>    {</div><div>       DataDependencyGraph &ddgGraph = getAnalysis<DataDependencyGraph>(*F);</div><div><br></div><div>       ControlDependencyGraph &cdgGraph = getAnalysis<ControlDependencyGraph>(*F);</div><div>       ....</div><div>    }</div><div>}</div><div><br></div><div><br></div><div><div>void ProgramDependencyGraph::getAnalysisUsage(AnalysisUsage &AU) const</div><div>{</div><div>  AU.addRequired<ControlDependencyGraph>();</div><div>  AU.addRequired<DataDependencyGraph>(); </div><div>  AU.setPreservesAll();</div><div>}</div></div><div><br></div><div>Best regards,</div><div><br></div><div>Shen</div></div>