Author: ddunbar
Date: Fri Feb 13 16:48:56 2009
New Revision: 64499
URL: http://llvm.org/viewvc/llvm-project?rev=64499&view=rev
Log:
Warn about attribute used ignored on "extern int a
__attribute__((used))".
Modified:
cfe/trunk/lib/Sema/SemaDeclAttr.cpp
cfe/trunk/test/Sema/attr-used.c
Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=64499&r1=64498&r2=64499&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Fri Feb 13 16:48:56 2009
@@ -439,7 +439,7 @@
}
if (const VarDecl *VD = dyn_cast<VarDecl>(d)) {
- if (VD->hasLocalStorage()) {
+ if (VD->hasLocalStorage() || VD->hasExternalStorage()) {
S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "used";
return;
}
Modified: cfe/trunk/test/Sema/attr-used.c
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/attr-used.c?rev=64499&r1=64498&r2=64499&view=diff
==============================================================================
--- cfe/trunk/test/Sema/attr-used.c (original)
+++ cfe/trunk/test/Sema/attr-used.c Fri Feb 13 16:48:56 2009
@@ -1,5 +1,8 @@
// RUN: clang -verify -fsyntax-only %s
+extern int l0 __attribute__((used)); // expected-warning {{used attribute
ignored}}
+__private_extern__ int l1 __attribute__((used)); // expected-warning {{used
attribute ignored}}
+
struct __attribute__((used)) s { // expected-warning {{'used' attribute only
applies to variable and function types}}
int x;
};
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits