1 // RUN: %clang_cc1 -verify -fsyntax-only %s 2 3 extern int f0(void) __attribute__((weak)); 4 extern int g0 __attribute__((weak)); 5 extern int g1 __attribute__((weak_import)); 6 int f2(void) __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); 10 void __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(void) __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 int C; // expected-note {{previous definition is here}} 20 extern int C __attribute__((weak_import)); // expected-warning {{'C' cannot be declared 'weak_import'}} 21 22 int C2; // expected-note {{previous definition is here}} 23 extern int C2; 24 extern int C2 __attribute__((weak_import)); // expected-warning {{'C2' cannot be declared 'weak_import'}} 25 26 static int pr14946_x; 27 extern int pr14946_x __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}} 28 29 static void pr14946_f(void); 30 void pr14946_f(void) __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}} 31