How to avoid my sub Pass being executed automatically by AU.addRequired<***> grammar?

Dear llvm developers,

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<>)?

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.

Thanks very much!

code:

bool ProgramDependencyGraph::runOnModule(Module &M)
{
for(Module::iterator F = M.begin(), E = M.end(); F != E; ++F)
{
DataDependencyGraph &ddgGraph = getAnalysis(*F);

ControlDependencyGraph &cdgGraph = getAnalysis(*F);

}
}

void ProgramDependencyGraph::getAnalysisUsage(AnalysisUsage &AU) const
{
AU.addRequired();
AU.addRequired();
AU.setPreservesAll();
}

Best regards,

Shen