1 | // RUN: %clang_cc1 -fsyntax-only -Wunknown-pragmas -verify %s |
2 | // RUN: %clang_cc1 -E %s 2>&1 | FileCheck --strict-whitespace %s |
3 | |
4 | // GCC doesn't expand macro args for unrecognized pragmas. |
5 | #define bar xX |
6 | #pragma foo bar // expected-warning {{unknown pragma ignored}} |
7 | // CHECK-NOT: unknown pragma in STDC namespace |
8 | // CHECK: {{^}}#pragma foo bar{{$}} |
9 | |
10 | #pragma STDC FP_CONTRACT ON |
11 | #pragma STDC FP_CONTRACT OFF |
12 | #pragma STDC FP_CONTRACT DEFAULT |
13 | #pragma STDC FP_CONTRACT IN_BETWEEN // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}} |
14 | // CHECK: {{^}}#pragma STDC FP_CONTRACT ON{{$}} |
15 | // CHECK: {{^}}#pragma STDC FP_CONTRACT OFF{{$}} |
16 | // CHECK: {{^}}#pragma STDC FP_CONTRACT DEFAULT{{$}} |
17 | // CHECK: {{^}}#pragma STDC FP_CONTRACT IN_BETWEEN{{$}} |
18 | |
19 | #pragma STDC FENV_ACCESS ON // expected-warning {{pragma STDC FENV_ACCESS ON is not supported, ignoring pragma}} |
20 | #pragma STDC FENV_ACCESS OFF |
21 | #pragma STDC FENV_ACCESS DEFAULT |
22 | #pragma STDC FENV_ACCESS IN_BETWEEN // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}} |
23 | // CHECK: {{^}}#pragma STDC FENV_ACCESS ON{{$}} |
24 | // CHECK: {{^}}#pragma STDC FENV_ACCESS OFF{{$}} |
25 | // CHECK: {{^}}#pragma STDC FENV_ACCESS DEFAULT{{$}} |
26 | // CHECK: {{^}}#pragma STDC FENV_ACCESS IN_BETWEEN{{$}} |
27 | |
28 | #pragma STDC CX_LIMITED_RANGE ON |
29 | #pragma STDC CX_LIMITED_RANGE OFF |
30 | #pragma STDC CX_LIMITED_RANGE DEFAULT |
31 | #pragma STDC CX_LIMITED_RANGE IN_BETWEEN // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}} |
32 | // CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE ON{{$}} |
33 | // CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE OFF{{$}} |
34 | // CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE DEFAULT{{$}} |
35 | // CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE IN_BETWEEN{{$}} |
36 | |
37 | #pragma STDC CX_LIMITED_RANGE // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}} |
38 | #pragma STDC CX_LIMITED_RANGE ON FULL POWER // expected-warning {{expected end of directive in pragma}} |
39 | // CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE{{$}} |
40 | // CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE ON FULL POWER{{$}} |
41 | |
42 | #pragma STDC SO_GREAT // expected-warning {{unknown pragma in STDC namespace}} |
43 | #pragma STDC // expected-warning {{unknown pragma in STDC namespace}} |
44 | // CHECK: {{^}}#pragma STDC SO_GREAT{{$}} |
45 | // CHECK: {{^}}#pragma STDC{{$}} |
46 | |