Revert r359814 "[Sema] Emit warning for visibility attribute on internal-linkage declaration"

See cfe-commits thread for r359814.

llvm-svn: 359858
This commit is contained in:
Nico Weber 2019-05-03 03:16:07 +00:00
parent c9256cc6ba
commit ecc969caf9
5 changed files with 2 additions and 23 deletions

View File

@ -2778,9 +2778,6 @@ def warn_attribute_ignored : Warning<"%0 attribute ignored">,
def warn_attribute_ignored_on_inline :
Warning<"%0 attribute ignored on inline function">,
InGroup<IgnoredAttributes>;
def warn_attribute_ignored_on_non_external :
Warning<"%0 attribute is ignored on a non-external symbol">,
InGroup<IgnoredAttributes>;
def warn_nocf_check_attribute_ignored :
Warning<"'nocf_check' attribute ignored; use -fcf-protection to enable the attribute">,
InGroup<IgnoredAttributes>;

View File

@ -2615,14 +2615,6 @@ static void handleVisibilityAttr(Sema &S, Decl *D, const ParsedAttr &AL,
return;
}
// Visibility attributes have no effect on symbols with internal linkage.
if (const auto *ND = dyn_cast<NamedDecl>(D)) {
if (!ND->isExternallyVisible())
S.Diag(AL.getRange().getBegin(),
diag::warn_attribute_ignored_on_non_external)
<< AL;
}
// Check that the argument is a string literal.
StringRef TypeStr;
SourceLocation LiteralLoc;

View File

@ -26,9 +26,3 @@ typedef int __attribute__((visibility("default"))) bar; // expected-warning {{'v
int x __attribute__((type_visibility("default"))); // expected-error {{'type_visibility' attribute only applies to types and namespaces}}
int PR17105 __attribute__((visibility(hidden))); // expected-error {{'visibility' attribute requires a string}}
static int test8 __attribute__((visibility("default"))); // expected-warning {{'visibility' attribute is ignored on a non-external symbol}}
static int test9 __attribute__((visibility("hidden"))); // expected-warning {{'visibility' attribute is ignored on a non-external symbol}}
static int test10 __attribute__((visibility("internal"))); // expected-warning {{'visibility' attribute is ignored on a non-external symbol}}
static int test11() __attribute__((visibility("default"))); // expected-warning {{'visibility' attribute is ignored on a non-external symbol}}

View File

@ -209,8 +209,10 @@ void test(int i) {
}
}
namespace {
// CHECK: struct {{\[\[gnu::visibility\(\"hidden\"\)\]\]}} S;
struct [[gnu::visibility("hidden")]] S;
}
// CHECK: struct CXXFunctionalCastExprPrint {
// CHECK-NEXT: } fce = CXXFunctionalCastExprPrint{};

View File

@ -18,9 +18,3 @@ void foo<int>() {
struct x3 {
static int y;
} __attribute((visibility("default"))); // expected-warning {{attribute 'visibility' after definition is ignored}}
const int test4 __attribute__((visibility("default"))) = 0; // expected-warning {{'visibility' attribute is ignored on a non-external symbol}}
namespace {
int test5 __attribute__((visibility("default"))); // expected-warning {{'visibility' attribute is ignored on a non-external symbol}}
};