Skip to content
Snippets Groups Projects
Commit e5f15cdc authored by Chris Lattner's avatar Chris Lattner
Browse files

Fix bug: ConstantMerge/2003-10-28-MergeExternalConstants.ll & PR64

llvm-svn: 9579
parent fa979bd7
No related branches found
No related tags found
No related merge requests found
...@@ -52,14 +52,25 @@ bool ConstantMerge::run(Module &M) { ...@@ -52,14 +52,25 @@ bool ConstantMerge::run(Module &M) {
if (I == CMap.end()) { // Nope, add it to the map if (I == CMap.end()) { // Nope, add it to the map
CMap.insert(I, std::make_pair(Init, GV)); CMap.insert(I, std::make_pair(Init, GV));
} else { // Yup, this is a duplicate! } else if (GV->hasInternalLinkage()) { // Yup, this is a duplicate!
// Make all uses of the duplicate constant use the canonical version... // Make all uses of the duplicate constant use the canonical version...
GV->replaceAllUsesWith(I->second); GV->replaceAllUsesWith(I->second);
// Delete the global value from the module... and back up iterator to // Delete the global value from the module... and back up iterator to
// not skip the next global... // not skip the next global...
GV = --M.getGlobalList().erase(GV); GV = --M.getGlobalList().erase(GV);
++NumMerged;
MadeChanges = true;
} else if (I->second->hasInternalLinkage()) {
// Make all uses of the duplicate constant use the canonical version...
I->second->replaceAllUsesWith(GV);
// Delete the global value from the module... and back up iterator to
// not skip the next global...
M.getGlobalList().erase(I->second);
I->second = GV;
++NumMerged; ++NumMerged;
MadeChanges = true; MadeChanges = true;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment