diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2012-06-15 18:00:24 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2012-06-15 18:00:24 +0000 |
commit | 1821c6c3b0ad23c7caf8205dfb6ffd710635cfa5 (patch) | |
tree | 0d9cd05ae0dfb760186d5805317f7763f61166fe /llvm/lib/Transforms/IPO/GlobalOpt.cpp | |
parent | a15a224db0cfc02fbbbaffe297c06259d8340feb (diff) | |
download | bcm5719-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/IPO/GlobalOpt.cpp')
-rw-r--r-- | llvm/lib/Transforms/IPO/GlobalOpt.cpp | 3 |
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; |