1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify %s 229b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman 329b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman// Note that this puts the expected lines before the directives to work around 429b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman// limitations in the -verify mode. 529b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman 629b1d07a87a2038ae5b4128a0b534badd728707dEli Friedmanint x; 729b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman/* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak 829b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman#pragma weak x 929b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman 101dbe36ad5c916ddc51bfdae9831099bcd91ec64cEli Friedmanextern int z; 1129b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman/* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak z = = 1229b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman/* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak z = 13e25ff83fb7eee9eeda89b6f2371bc33a37bf1028Ryan Flynn/* expected-warning {{weak identifier 'y' never declared}} */ #pragma weak z = y 1429b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman 151dbe36ad5c916ddc51bfdae9831099bcd91ec64cEli Friedmanextern int a; 1629b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman/* expected-warning {{extra tokens at end of '#pragma weak'}}*/ #pragma weak a b 1729b1d07a87a2038ae5b4128a0b534badd728707dEli Friedman/* expected-warning {{extra tokens at end of '#pragma weak'}}*/ #pragma weak a = x c 18961d0573487933199cb287ce8c472121812b3c78Richard Smith 19961d0573487933199cb287ce8c472121812b3c78Richard Smith 20961d0573487933199cb287ce8c472121812b3c78Richard Smithvoid pragma_is_not_a_statement(int x) 21961d0573487933199cb287ce8c472121812b3c78Richard Smith{ 22961d0573487933199cb287ce8c472121812b3c78Richard Smith int t; 23961d0573487933199cb287ce8c472121812b3c78Richard Smith 24961d0573487933199cb287ce8c472121812b3c78Richard Smith { 25961d0573487933199cb287ce8c472121812b3c78Richard Smith if (x) 26961d0573487933199cb287ce8c472121812b3c78Richard Smith#pragma weak t 27961d0573487933199cb287ce8c472121812b3c78Richard Smith else // expected-error {{expected expression}} 28961d0573487933199cb287ce8c472121812b3c78Richard Smith#pragma weak t 29961d0573487933199cb287ce8c472121812b3c78Richard Smith } 30961d0573487933199cb287ce8c472121812b3c78Richard Smith 31961d0573487933199cb287ce8c472121812b3c78Richard Smith switch (x) { 32961d0573487933199cb287ce8c472121812b3c78Richard Smith case 1: 33961d0573487933199cb287ce8c472121812b3c78Richard Smith#pragma weak t 34961d0573487933199cb287ce8c472121812b3c78Richard Smith } // expected-error {{expected statement}} 35961d0573487933199cb287ce8c472121812b3c78Richard Smith switch(x) { 36961d0573487933199cb287ce8c472121812b3c78Richard Smith default: 37961d0573487933199cb287ce8c472121812b3c78Richard Smith#pragma weak t 38961d0573487933199cb287ce8c472121812b3c78Richard Smith } // expected-error {{expected statement}} 39961d0573487933199cb287ce8c472121812b3c78Richard Smith 40961d0573487933199cb287ce8c472121812b3c78Richard Smithlabel: 41961d0573487933199cb287ce8c472121812b3c78Richard Smith#pragma weak t 42961d0573487933199cb287ce8c472121812b3c78Richard Smith} // expected-error {{expected statement}} 43961d0573487933199cb287ce8c472121812b3c78Richard Smith 44961d0573487933199cb287ce8c472121812b3c78Richard Smith 45