diff options
author | Steven Wu <stevenwu@apple.com> | 2018-01-05 22:45:03 +0000 |
---|---|---|
committer | Steven Wu <stevenwu@apple.com> | 2018-01-05 22:45:03 +0000 |
commit | b96a3a4fe55d65bb9e595410ca682892e271624f (patch) | |
tree | 1c33fe076dc9d1ad0a7f8a9851029df7975180d0 /clang/test | |
parent | b0b52618c03c3410cae7b86b7fc59e10ee63ea6c (diff) | |
download | bcm5719-llvm-b96a3a4fe55d65bb9e595410ca682892e271624f.tar.gz bcm5719-llvm-b96a3a4fe55d65bb9e595410ca682892e271624f.zip |
Preserve unknown STDC pragma through preprocessor
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
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/Preprocessor/pragma_unknown.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/clang/test/Preprocessor/pragma_unknown.c b/clang/test/Preprocessor/pragma_unknown.c index 5578ce5b750..81fe88cd385 100644 --- a/clang/test/Preprocessor/pragma_unknown.c +++ b/clang/test/Preprocessor/pragma_unknown.c @@ -1,29 +1,45 @@ // RUN: %clang_cc1 -fsyntax-only -Wunknown-pragmas -verify %s -// RUN: %clang_cc1 -E %s | FileCheck --strict-whitespace %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{{$}} |