1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -verify -fsyntax-only %s 26e775dbafba2ab6634decc489eb3b4301b4b506bDaniel Dunbar 36e775dbafba2ab6634decc489eb3b4301b4b506bDaniel Dunbarextern int g0 __attribute__((weak)); 46e775dbafba2ab6634decc489eb3b4301b4b506bDaniel Dunbarextern int g1 __attribute__((weak_import)); 56e775dbafba2ab6634decc489eb3b4301b4b506bDaniel Dunbarint g2 __attribute__((weak)); 66e775dbafba2ab6634decc489eb3b4301b4b506bDaniel Dunbarint g3 __attribute__((weak_import)); // expected-warning {{'weak_import' attribute cannot be specified on a definition}} 76e775dbafba2ab6634decc489eb3b4301b4b506bDaniel Dunbarint __attribute__((weak_import)) g4(void); 8d1969d803cfcc65f1c334df4cc89c7fdd33ee4c9Mike Stumpvoid __attribute__((weak_import)) g5(void) { 96e775dbafba2ab6634decc489eb3b4301b4b506bDaniel Dunbar} 106e775dbafba2ab6634decc489eb3b4301b4b506bDaniel Dunbar 11d6b8de0e7b01196bd2bee207feb81bc409a5baf9John McCallstruct __attribute__((weak)) s0 {}; // expected-warning {{'weak' attribute only applies to variables and functions}} 12d6b8de0e7b01196bd2bee207feb81bc409a5baf9John McCallstruct __attribute__((weak_import)) s1 {}; // expected-warning {{'weak_import' attribute only applies to variables and functions}} 136e775dbafba2ab6634decc489eb3b4301b4b506bDaniel Dunbar 14332bb2a2e3cd0a5af85758847a8050ae8ceee5f3John McCallstatic int x __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}} 15d543130a3009a350017e2e411ea43bb3e5459b96Fariborz Jahanian 16d543130a3009a350017e2e411ea43bb3e5459b96Fariborz Jahanian// rdar://9538608 17d543130a3009a350017e2e411ea43bb3e5459b96Fariborz Jahanianint C; // expected-note {{previous definition is here}} 18d543130a3009a350017e2e411ea43bb3e5459b96Fariborz Jahanianextern int C __attribute__((weak_import)); // expected-warning {{an already-declared variable is made a weak_import declaration}} 192a5bb509e2d33a0f7aa4bb0ba53c73b5dfdd6bb4Rafael Espindola 202a5bb509e2d33a0f7aa4bb0ba53c73b5dfdd6bb4Rafael Espindolastatic int pr14946_x; 212a5bb509e2d33a0f7aa4bb0ba53c73b5dfdd6bb4Rafael Espindolaextern int pr14946_x __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}} 222a5bb509e2d33a0f7aa4bb0ba53c73b5dfdd6bb4Rafael Espindola 232a5bb509e2d33a0f7aa4bb0ba53c73b5dfdd6bb4Rafael Espindolastatic void pr14946_f(); 242a5bb509e2d33a0f7aa4bb0ba53c73b5dfdd6bb4Rafael Espindolavoid pr14946_f() __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}} 25