diff --git a/lib/Transforms/IPO/MergeFunctions.cpp b/lib/Transforms/IPO/MergeFunctions.cpp index d4ecd55d033..30afaab47cf 100644 --- a/lib/Transforms/IPO/MergeFunctions.cpp +++ b/lib/Transforms/IPO/MergeFunctions.cpp @@ -798,8 +798,10 @@ bool MergeFunctions::runOnModule(Module &M) { TD = getAnalysisIfAvailable(); for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) { - Deferred.push_back(WeakVH(I)); + if (!I->isDeclaration() && !I->hasAvailableExternallyLinkage()) + Deferred.push_back(WeakVH(I)); } + FnSet.resize(Deferred.size()); do { std::vector Worklist;