void UnifyFunctionExitNodes::getAnalysisUsage(AnalysisUsage &AU) const{ // We preserve the non-critical-edgeness property AU.addPreservedID(BreakCriticalEdgesID); // This is a cluster of orthogonal Transforms AU.addPreserved("mem2reg"); AU.addPreservedID(LowerSwitchID); }
void MachineModulePass::getAnalysisUsage(AnalysisUsage &AU) const { AU.addPreserved<MachineFunctionAnalysis>(); // MachineModulePass preserves all LLVM IR passes, but there's no // high-level way to express this. Instead, just list a bunch of // passes explicitly. This does not include setPreservesCFG, // because CodeGen overloads that to mean preserving the MachineBasicBlock // CFG in addition to the LLVM IR CFG. AU.addPreserved<AliasAnalysis>(); AU.addPreserved("scalar-evolution"); AU.addPreserved("iv-users"); AU.addPreserved("memdep"); AU.addPreserved("live-values"); AU.addPreserved("domtree"); AU.addPreserved("domfrontier"); AU.addPreserved("loops"); AU.addPreserved("lda"); ModulePass::getAnalysisUsage(AU); }