I cannot figure out a particular PassManager error for what seem to be
legal dependencies.
Here is the situation.  We have 5 passes, RegisterAllocator,
FunctionLiveVarInfo, CoalesceCopies, DominanceForest, and UnionSSAVars,
with dependencies as follows:
class RegisterAllocator : public FunctionPass {
  . . .
  virtual void getAnalysisUsage(AnalysisUsage &AU) const {
	AU.addRequired<FunctionLiveVarInfo>();
	AU.addRequired<CoalesceCopies>();
  }
  . . .
};
class FunctionLiveVarInfo : public FunctionPass {
  . . .
  virtual void getAnalysisUsage(AnalysisUsage &AU) const {
	AU.setPreservesAll();
  }
  . . .
};
class CoalesceCopies : public FunctionPass {
  . . .
  virtual void getAnalysisUsage(AnalysisUsage &AU) {
	AU.setPreservesAll();
	AU.addRequired<FunctionLiveVarInfo>();
	AU.addRequired<UnionSSAVars>();
	AU.addRequired<DominanceForest>();
  }
  . . .
};
class UnionSSAVars : public FunctionPass {
  . . .
  virtual void getAnalysisUsage(AnalysisUsage &AU) {
        AU.setPreservesAll();
	AU.addRequired<FunctionLiveVarInfo>();
  }
  . . .
};
class DominanceForest : public FunctionPass {
  . . .
  virtual void getAnalysisUsage(AnalysisUsage &AU) {
        AU.setPreservesAll();
	AU.addRequired<DominatorTree>();
	AU.addRequired<UnionSSAVars>();
  }
  . . .
};
When llc is run (invoking RegisterAllocator), it gives this error message:
Assertion failed: 0 && "Pass available but not found! "
"Perhaps this is a
module pass requiring a function pass?", file PassManagerT.h, line 395
Abort
None of the passes here is or requires a module pass.  What does the error
message mean, then?
Aqeel Mahesri