blob: 81fe88cd38558e646ef6ad61f01cc159ed7d120b [file] [log] [blame]
Daniel Dunbar8fbe78f2009-12-15 20:14:24 +00001// RUN: %clang_cc1 -fsyntax-only -Wunknown-pragmas -verify %s
Steven Wub96a3a42018-01-05 22:45:03 +00002// RUN: %clang_cc1 -E %s 2>&1 | FileCheck --strict-whitespace %s
Chris Lattnera7e7e2b2006-07-02 21:50:31 +00003
4// GCC doesn't expand macro args for unrecognized pragmas.
5#define bar xX
Chris Lattner21656f22009-04-19 21:10:26 +00006#pragma foo bar // expected-warning {{unknown pragma ignored}}
Steven Wub96a3a42018-01-05 22:45:03 +00007// CHECK-NOT: unknown pragma in STDC namespace
Dmitri Gribenkof37d0cd2013-02-09 16:25:38 +00008// CHECK: {{^}}#pragma foo bar{{$}}
Chris Lattnera7e7e2b2006-07-02 21:50:31 +00009
Chris Lattner958ee042009-04-19 21:20:35 +000010#pragma STDC FP_CONTRACT ON
11#pragma STDC FP_CONTRACT OFF
12#pragma STDC FP_CONTRACT DEFAULT
Chris Lattner02ef4e32009-04-19 21:50:08 +000013#pragma STDC FP_CONTRACT IN_BETWEEN // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}}
Steven Wub96a3a42018-01-05 22:45:03 +000014// 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{{$}}
Chris Lattner958ee042009-04-19 21:20:35 +000018
Chris Lattnerdf222682009-04-19 21:55:32 +000019#pragma STDC FENV_ACCESS ON // expected-warning {{pragma STDC FENV_ACCESS ON is not supported, ignoring pragma}}
Chris Lattner958ee042009-04-19 21:20:35 +000020#pragma STDC FENV_ACCESS OFF
21#pragma STDC FENV_ACCESS DEFAULT
Chris Lattner02ef4e32009-04-19 21:50:08 +000022#pragma STDC FENV_ACCESS IN_BETWEEN // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}}
Steven Wub96a3a42018-01-05 22:45:03 +000023// 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{{$}}
Chris Lattner958ee042009-04-19 21:20:35 +000027
28#pragma STDC CX_LIMITED_RANGE ON
29#pragma STDC CX_LIMITED_RANGE OFF
30#pragma STDC CX_LIMITED_RANGE DEFAULT
Chris Lattner02ef4e32009-04-19 21:50:08 +000031#pragma STDC CX_LIMITED_RANGE IN_BETWEEN // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}}
Steven Wub96a3a42018-01-05 22:45:03 +000032// 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{{$}}
Chris Lattner02ef4e32009-04-19 21:50:08 +000036
37#pragma STDC CX_LIMITED_RANGE // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}}
Peter Collingbourne2f1e36b2011-02-28 02:37:51 +000038#pragma STDC CX_LIMITED_RANGE ON FULL POWER // expected-warning {{expected end of directive in pragma}}
Steven Wub96a3a42018-01-05 22:45:03 +000039// CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE{{$}}
40// CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE ON FULL POWER{{$}}
Chris Lattner958ee042009-04-19 21:20:35 +000041
Chris Lattnera0b1f762009-04-19 21:25:37 +000042#pragma STDC SO_GREAT // expected-warning {{unknown pragma in STDC namespace}}
43#pragma STDC // expected-warning {{unknown pragma in STDC namespace}}
Steven Wub96a3a42018-01-05 22:45:03 +000044// CHECK: {{^}}#pragma STDC SO_GREAT{{$}}
45// CHECK: {{^}}#pragma STDC{{$}}