summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2012-06-15 18:00:24 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2012-06-15 18:00:24 +0000
commit1821c6c3b0ad23c7caf8205dfb6ffd710635cfa5 (patch)
tree0d9cd05ae0dfb760186d5805317f7763f61166fe /llvm/lib/Transforms
parenta15a224db0cfc02fbbbaffe297c06259d8340feb (diff)
downloadbcm5719-llvm-1821c6c3b0ad23c7caf8205dfb6ffd710635cfa5.tar.gz
bcm5719-llvm-1821c6c3b0ad23c7caf8205dfb6ffd710635cfa5.zip
Some optimizations done by globalopt are safe only for internal linkage, not
linkonce linkage. For example, it is not valid to add unnamed_addr. This also fixes a crash in g++.dg/opt/static5.C. llvm-svn: 158528
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/IPO/GlobalOpt.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/IPO/GlobalOpt.cpp b/llvm/lib/Transforms/IPO/GlobalOpt.cpp
index 9e3b8c28269..cca959b2476 100644
--- a/llvm/lib/Transforms/IPO/GlobalOpt.cpp
+++ b/llvm/lib/Transforms/IPO/GlobalOpt.cpp
@@ -1729,6 +1729,9 @@ bool GlobalOpt::ProcessGlobal(GlobalVariable *GV,
return true;
}
+ if (!GV->hasLocalLinkage())
+ return false;
+
SmallPtrSet<const PHINode*, 16> PHIUsers;
GlobalStatus GS;
OpenPOWER on IntegriCloud