60 lines · cpp
1// RUN: %clang_cc1 -fms-extensions -fsyntax-only -verify %s2 3#pragma alloc_text() // expected-warning {{expected a string literal for the section name in '#pragma alloc_text'}}4#pragma alloc_text(a // expected-warning {{expected ',' in '#pragma alloc_text'}}5#pragma alloc_text(a, a // expected-warning {{missing ')' after '#pragma alloc_text'}}6#pragma alloc_text(a, a) // expected-error {{use of undeclared a}}7#pragma alloc_text(L"a", a) // expected-warning {{expected a string literal for the section name}}8 9void foo();10#pragma alloc_text(a, foo) // expected-error {{'#pragma alloc_text' is applicable only to functions with C linkage}}11 12extern "C" void foo1();13#pragma alloc_text(a, foo1) // no-warning14#pragma alloc_text(a, foo1) asdf // expected-warning {{extra tokens at end of '#pragma alloc_text'}}15#pragma alloc_text(a, foo1 // expected-warning {{missing ')' after '#pragma alloc_text'}}16 17namespace N {18#pragma alloc_text(b, foo1) // no-warning19}20 21extern "C" {22void foo2();23#pragma alloc_text(a, foo2) // no-warning24}25 26void foo3() {27#pragma alloc_text(a, foo1) // expected-error {{'#pragma alloc_text' can only appear at file scope}}28}29 30extern "C" void foo4();31#pragma alloc_text(c, foo4) // no-warning32void foo4() {}33 34void foo5(); // expected-note {{previous declaration is here}}35#pragma alloc_text(c, foo5) // expected-error {{'#pragma alloc_text' is applicable only to functions with C linkage}}36extern "C" void foo5() {} // expected-error {{declaration of 'foo5' has a different language linkage}}37 38extern "C" {39static void foo6();40#pragma alloc_text(c, foo6) // no-warning41void foo6() {}42}43 44extern "C" {45static void foo7();46}47static void foo7();48#pragma alloc_text(c, foo7) // no-warning49void foo7() {}50 51static void foo8();52extern "C" {53static void foo8();54}55#pragma alloc_text(c, foo8) // expected-error {{'#pragma alloc_text' is applicable only to functions with C linkage}}56void foo8() {}57 58enum foo9 { A, B, C };59#pragma alloc_text(c, foo9) // expected-error {{'#pragma alloc_text' is applicable only to functions}}60