[PATCH] D54188: [Sema] Mark target of __attribute__((alias("target"))) used for C
Nick Desaulniers via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jan 9 14:12:42 PST 2019
nickdesaulniers updated this revision to Diff 180932.
nickdesaulniers added a comment.
- add static keyword to test case
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D54188/new/
https://reviews.llvm.org/D54188
Files:
lib/Sema/SemaDeclAttr.cpp
test/Sema/alias-unused.c
Index: test/Sema/alias-unused.c
===================================================================
--- /dev/null
+++ test/Sema/alias-unused.c
@@ -0,0 +1,7 @@
+// RUN: %clang_cc1 -triple x86_64-linux-gnu -Wunneeded-internal-declaration -x c -verify %s
+// expected-no-diagnostics
+static int f() { return 42; }
+int g() __attribute__((alias("f")));
+
+static int foo [] = { 42, 0xDEAD };
+extern typeof(foo) bar __attribute__((unused, alias("foo")));
Index: lib/Sema/SemaDeclAttr.cpp
===================================================================
--- lib/Sema/SemaDeclAttr.cpp
+++ lib/Sema/SemaDeclAttr.cpp
@@ -1898,7 +1898,16 @@
}
}
- // FIXME: check if target symbol exists in current file
+ // Mark target used to prevent unneeded-internal-declaration warnings.
+ if (!S.LangOpts.CPlusPlus) {
+ // FIXME: demangle Str for C++, as the attribute refers to the mangled
+ // linkage name, not the pre-mangled identifier.
+ const DeclarationNameInfo target(&S.Context.Idents.get(Str), AL.getLoc());
+ LookupResult LR(S, target, Sema::LookupOrdinaryName);
+ if (S.LookupQualifiedName(LR, S.getCurLexicalContext()))
+ for (NamedDecl *ND : LR)
+ ND->markUsed(S.Context);
+ }
D->addAttr(::new (S.Context) AliasAttr(AL.getRange(), S.Context, Str,
AL.getAttributeSpellingListIndex()));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D54188.180932.patch
Type: text/x-patch
Size: 1371 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190109/b08cf427/attachment.bin>
More information about the cfe-commits
mailing list