[llvm] r208264 - GlobalValue: Assert symbols with local linkage have default visibility
Duncan P. N. Exon Smith
dexonsmith at apple.com
Wed May 7 16:00:22 PDT 2014
Author: dexonsmith
Date: Wed May 7 18:00:22 2014
New Revision: 208264
URL: http://llvm.org/viewvc/llvm-project?rev=208264&view=rev
Log:
GlobalValue: Assert symbols with local linkage have default visibility
The change to ExtractGV.cpp has no functionality change except to avoid
the asserts. Existing testcases already cover this, so I didn't add a
new one.
Modified:
llvm/trunk/include/llvm/IR/GlobalValue.h
llvm/trunk/lib/Transforms/IPO/ExtractGV.cpp
Modified: llvm/trunk/include/llvm/IR/GlobalValue.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/GlobalValue.h?rev=208264&r1=208263&r2=208264&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/GlobalValue.h (original)
+++ llvm/trunk/include/llvm/IR/GlobalValue.h Wed May 7 18:00:22 2014
@@ -93,7 +93,11 @@ public:
bool hasProtectedVisibility() const {
return Visibility == ProtectedVisibility;
}
- void setVisibility(VisibilityTypes V) { Visibility = V; }
+ void setVisibility(VisibilityTypes V) {
+ assert((!hasLocalLinkage() || V == DefaultVisibility) &&
+ "local linkage requires default visibility");
+ Visibility = V;
+ }
DLLStorageClassTypes getDLLStorageClass() const {
return DLLStorageClassTypes(DllStorageClass);
@@ -195,7 +199,11 @@ public:
bool hasExternalWeakLinkage() const { return isExternalWeakLinkage(Linkage); }
bool hasCommonLinkage() const { return isCommonLinkage(Linkage); }
- void setLinkage(LinkageTypes LT) { Linkage = LT; }
+ void setLinkage(LinkageTypes LT) {
+ assert((!isLocalLinkage(LT) || hasDefaultVisibility()) &&
+ "local linkage requires default visibility");
+ Linkage = LT;
+ }
LinkageTypes getLinkage() const { return Linkage; }
bool isDiscardableIfUnused() const {
Modified: llvm/trunk/lib/Transforms/IPO/ExtractGV.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/ExtractGV.cpp?rev=208264&r1=208263&r2=208264&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/IPO/ExtractGV.cpp (original)
+++ llvm/trunk/lib/Transforms/IPO/ExtractGV.cpp Wed May 7 18:00:22 2014
@@ -27,11 +27,10 @@ using namespace llvm;
/// the split module remain valid.
static void makeVisible(GlobalValue &GV, bool Delete) {
bool Local = GV.hasLocalLinkage();
- if (Local)
- GV.setVisibility(GlobalValue::HiddenVisibility);
-
if (Local || Delete) {
GV.setLinkage(GlobalValue::ExternalLinkage);
+ if (Local)
+ GV.setVisibility(GlobalValue::HiddenVisibility);
return;
}
More information about the llvm-commits
mailing list