1 // RUN: %clang_cc1 -fsyntax-only -verify %s
4 void foo(void) __attribute__((unused
));
5 void foo(void) __attribute__((unused
));
6 void foo(void){} // expected-note {{previous definition is here}}
7 void foo(void) __attribute__((constructor
)); // expected-warning {{must precede definition}}
13 int bar
__attribute__((weak
));
14 int bar
__attribute__((used
));
15 extern int bar
__attribute__((weak
));
16 int bar
= 0; // expected-note {{previous definition is here}}
17 int bar
__attribute__((weak
)); // no warning as it matches the existing
19 int bar
__attribute__((used
,
20 visibility("hidden"))); // expected-warning {{must precede definition}}
23 struct zed
{ // expected-note {{previous definition is here}}
25 struct __attribute__((visibility("hidden"))) zed
; // expected-warning {{must precede definition}}
27 struct __attribute__((visibility("hidden"))) zed2
{
29 struct __attribute__((visibility("hidden"))) zed2
;
31 struct __attribute__((visibility("hidden"))) zed3
{ // expected-note {{previous definition is here}}
33 struct __attribute__((visibility("hidden"),
34 packed
// expected-warning {{must precede definition}}
37 struct __attribute__((visibility("hidden"))) zed4
{ // expected-note {{previous attribute is here}}
39 struct __attribute__((visibility("default"))) zed4
; // expected-error {{visibility does not match previous declaration}}