/// Run the internalizer on \p TheModule, returns true if any changes was
/// made.
- ///
- /// If the CallGraph \p CG is supplied, it will be updated when
- /// internalizing a function (by removing any edge from the "external node")
- bool internalizeModule(Module &TheModule, CallGraph *CG = nullptr);
+ bool internalizeModule(Module &TheModule);
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
};
/// Helper function to internalize functions and variables in a Module.
inline bool
internalizeModule(Module &TheModule,
- std::function<bool(const GlobalValue &)> MustPreserveGV,
- CallGraph *CG = nullptr) {
+ std::function<bool(const GlobalValue &)> MustPreserveGV) {
return InternalizePass(std::move(MustPreserveGV))
- .internalizeModule(TheModule, CG);
+ .internalizeModule(TheModule);
}
} // end namespace llvm
Info.External = true;
}
-bool InternalizePass::internalizeModule(Module &M, CallGraph *CG) {
+bool InternalizePass::internalizeModule(Module &M) {
bool Changed = false;
- CallGraphNode *ExternalNode = CG ? CG->getExternalCallingNode() : nullptr;
SmallVector<GlobalValue *, 4> Used;
collectUsedGlobalVariables(M, Used, false);
continue;
Changed = true;
- if (ExternalNode)
- // Remove a callgraph edge from the external node to this function.
- ExternalNode->removeOneAbstractEdgeTo((*CG)[&I]);
-
++NumFunctions;
LLVM_DEBUG(dbgs() << "Internalizing func " << I.getName() << "\n");
}
InternalizePass::InternalizePass() : MustPreserveGV(PreserveAPIList()) {}
PreservedAnalyses InternalizePass::run(Module &M, ModuleAnalysisManager &AM) {
- if (!internalizeModule(M, AM.getCachedResult<CallGraphAnalysis>(M)))
+ if (!internalizeModule(M))
return PreservedAnalyses::all();
PreservedAnalyses PA;