GlobalValue: Automatically reset visibility when setting local linkage

r208264 started asserting in `setLinkage()` and `setVisibility()` that
visibility and linkage are compatible.  There are a few places in clang
where visibility is set first, and then linkage later, so the assert
fires.  In `setLinkage()`, it's clear what the visibility *should* be,
so rather than updating all the call sites just automatically fix the
visibility.

The testcase for this is for *clang*, so it'll follow separately in cfe.

PR19760

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209227 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith 2014-05-20 19:00:58 +00:00
parent 1e3493b04a
commit 8598e290c3

View File

@ -222,8 +222,8 @@ public:
bool hasCommonLinkage() const { return isCommonLinkage(Linkage); }
void setLinkage(LinkageTypes LT) {
assert((!isLocalLinkage(LT) || hasDefaultVisibility()) &&
"local linkage requires default visibility");
if (isLocalLinkage(LT))
Visibility = DefaultVisibility;
Linkage = LT;
}
LinkageTypes getLinkage() const { return Linkage; }