Clang Project

clang_source_code/test/Preprocessor/pragma_unknown.c
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