Really return whether Internalize did change the Module or not.

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 266169
This commit is contained in:
Mehdi Amini 2016-04-13 05:25:16 +00:00
parent 3949b9e6dd
commit 59269a874f
1 changed files with 5 additions and 7 deletions

View File

@ -213,6 +213,7 @@ void Internalizer::checkComdatVisibility(
}
bool Internalizer::internalizeModule(Module &M, CallGraph *CG) {
bool Changed = false;
CallGraphNode *ExternalNode = CG ? CG->getExternalCallingNode() : nullptr;
SmallPtrSet<GlobalValue *, 8> Used;
@ -246,6 +247,7 @@ bool Internalizer::internalizeModule(Module &M, CallGraph *CG) {
for (Function &I : M) {
if (!maybeInternalize(I, ExternalComdats))
continue;
Changed = true;
if (ExternalNode)
// Remove a callgraph edge from the external node to this function.
@ -278,6 +280,7 @@ bool Internalizer::internalizeModule(Module &M, CallGraph *CG) {
for (auto &GV : M.globals()) {
if (!maybeInternalize(GV, ExternalComdats))
continue;
Changed = true;
++NumGlobals;
DEBUG(dbgs() << "Internalized gvar " << GV.getName() << "\n");
@ -287,18 +290,13 @@ bool Internalizer::internalizeModule(Module &M, CallGraph *CG) {
for (auto &GA : M.aliases()) {
if (!maybeInternalize(GA, ExternalComdats))
continue;
Changed = true;
++NumAliases;
DEBUG(dbgs() << "Internalized alias " << GA.getName() << "\n");
}
// We do not keep track of whether this pass changed the module because
// it adds unnecessary complexity:
// 1) This pass will generally be near the start of the pass pipeline, so
// there will be no analyses to invalidate.
// 2) This pass will most likely end up changing the module and it isn't worth
// worrying about optimizing the case where the module is unchanged.
return true;
return Changed;
}
/// Public API below