llvm pass - getAnalysisUsage() problem

I am using llvm-3.8 for my project. Following is my getAnalysisUsage() method:

virtual void getAnalysisUsage(AnalysisUsage &AU) const override
{
   AU.setPreservesAll();
   AU.addRequired<X>();
   AU.addRequired<Y>();
   AU.addRequired<Z>();
}

Now, if I call getAnalysis(*F), all the required passes, i.e., X, Y
and Z are being invoked. However, I want to invoke only the X. Could
anyone help me in this regard?

Thanks