1 // RUN: %clang_cc1 -verify -fsyntax-only %s 2 3 extern int f0() __attribute__((weak)); 4 extern int g0 __attribute__((weak)); 5 extern int g1 __attribute__((weak_import)); 6 int f2() __attribute__((weak)); 7 int g2 __attribute__((weak)); 8 int g3 __attribute__((weak_import)); // expected-warning {{'weak_import' attribute cannot be specified on a definition}} 9 int __attribute__((weak_import)) g4(void); g5(void)10void __attribute__((weak_import)) g5(void) { 11 } 12 13 struct __attribute__((weak)) s0 {}; // expected-warning {{'weak' attribute only applies to variables, functions, and classes}} 14 struct __attribute__((weak_import)) s1 {}; // expected-warning {{'weak_import' attribute only applies to variables and functions}} 15 16 static int f() __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}} 17 static int x __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}} 18 19 // rdar://9538608 20 int C; // expected-note {{previous definition is here}} 21 extern int C __attribute__((weak_import)); // expected-warning {{an already-declared variable is made a weak_import declaration}} 22 23 static int pr14946_x; 24 extern int pr14946_x __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}} 25 26 static void pr14946_f(); 27 void pr14946_f() __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}} 28