mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-24 05:55:43 -04:00

Summary: #pragma STDC FP_CONTRACT handler is only registered in parser so we should keep the unknown STDC pragma through preprocessor and we also should not emit warning for unknown STDC pragma during preprocessor. rdar://problem/35724351 Reviewers: efriedma, rsmith, arphaman Reviewed By: efriedma Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D41780 llvm-svn: 321909
46 lines
2.2 KiB
C
46 lines
2.2 KiB
C
// RUN: %clang_cc1 -fsyntax-only -Wunknown-pragmas -verify %s
|
|
// RUN: %clang_cc1 -E %s 2>&1 | FileCheck --strict-whitespace %s
|
|
|
|
// GCC doesn't expand macro args for unrecognized pragmas.
|
|
#define bar xX
|
|
#pragma foo bar // expected-warning {{unknown pragma ignored}}
|
|
// CHECK-NOT: unknown pragma in STDC namespace
|
|
// CHECK: {{^}}#pragma foo bar{{$}}
|
|
|
|
#pragma STDC FP_CONTRACT ON
|
|
#pragma STDC FP_CONTRACT OFF
|
|
#pragma STDC FP_CONTRACT DEFAULT
|
|
#pragma STDC FP_CONTRACT IN_BETWEEN // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}}
|
|
// CHECK: {{^}}#pragma STDC FP_CONTRACT ON{{$}}
|
|
// CHECK: {{^}}#pragma STDC FP_CONTRACT OFF{{$}}
|
|
// CHECK: {{^}}#pragma STDC FP_CONTRACT DEFAULT{{$}}
|
|
// CHECK: {{^}}#pragma STDC FP_CONTRACT IN_BETWEEN{{$}}
|
|
|
|
#pragma STDC FENV_ACCESS ON // expected-warning {{pragma STDC FENV_ACCESS ON is not supported, ignoring pragma}}
|
|
#pragma STDC FENV_ACCESS OFF
|
|
#pragma STDC FENV_ACCESS DEFAULT
|
|
#pragma STDC FENV_ACCESS IN_BETWEEN // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}}
|
|
// CHECK: {{^}}#pragma STDC FENV_ACCESS ON{{$}}
|
|
// CHECK: {{^}}#pragma STDC FENV_ACCESS OFF{{$}}
|
|
// CHECK: {{^}}#pragma STDC FENV_ACCESS DEFAULT{{$}}
|
|
// CHECK: {{^}}#pragma STDC FENV_ACCESS IN_BETWEEN{{$}}
|
|
|
|
#pragma STDC CX_LIMITED_RANGE ON
|
|
#pragma STDC CX_LIMITED_RANGE OFF
|
|
#pragma STDC CX_LIMITED_RANGE DEFAULT
|
|
#pragma STDC CX_LIMITED_RANGE IN_BETWEEN // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}}
|
|
// CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE ON{{$}}
|
|
// CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE OFF{{$}}
|
|
// CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE DEFAULT{{$}}
|
|
// CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE IN_BETWEEN{{$}}
|
|
|
|
#pragma STDC CX_LIMITED_RANGE // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}}
|
|
#pragma STDC CX_LIMITED_RANGE ON FULL POWER // expected-warning {{expected end of directive in pragma}}
|
|
// CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE{{$}}
|
|
// CHECK: {{^}}#pragma STDC CX_LIMITED_RANGE ON FULL POWER{{$}}
|
|
|
|
#pragma STDC SO_GREAT // expected-warning {{unknown pragma in STDC namespace}}
|
|
#pragma STDC // expected-warning {{unknown pragma in STDC namespace}}
|
|
// CHECK: {{^}}#pragma STDC SO_GREAT{{$}}
|
|
// CHECK: {{^}}#pragma STDC{{$}}
|