summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex/Pragma.cpp
diff options
context:
space:
mode:
authorSteven Wu <stevenwu@apple.com>2018-01-05 22:45:03 +0000
committerSteven Wu <stevenwu@apple.com>2018-01-05 22:45:03 +0000
commitb96a3a4fe55d65bb9e595410ca682892e271624f (patch)
tree1c33fe076dc9d1ad0a7f8a9851029df7975180d0 /clang/lib/Lex/Pragma.cpp
parentb0b52618c03c3410cae7b86b7fc59e10ee63ea6c (diff)
downloadbcm5719-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/lib/Lex/Pragma.cpp')
-rw-r--r--clang/lib/Lex/Pragma.cpp55
1 files changed, 0 insertions, 55 deletions
diff --git a/clang/lib/Lex/Pragma.cpp b/clang/lib/Lex/Pragma.cpp
index b8acd92521f..d2abc5acc09 100644
--- a/clang/lib/Lex/Pragma.cpp
+++ b/clang/lib/Lex/Pragma.cpp
@@ -1601,44 +1601,6 @@ struct PragmaPopMacroHandler : public PragmaHandler {
}
};
-// Pragma STDC implementations.
-
-/// PragmaSTDC_FENV_ACCESSHandler - "\#pragma STDC FENV_ACCESS ...".
-struct PragmaSTDC_FENV_ACCESSHandler : public PragmaHandler {
- PragmaSTDC_FENV_ACCESSHandler() : PragmaHandler("FENV_ACCESS") {}
-
- void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
- Token &Tok) override {
- tok::OnOffSwitch OOS;
- if (PP.LexOnOffSwitch(OOS))
- return;
- if (OOS == tok::OOS_ON)
- PP.Diag(Tok, diag::warn_stdc_fenv_access_not_supported);
- }
-};
-
-/// PragmaSTDC_CX_LIMITED_RANGEHandler - "\#pragma STDC CX_LIMITED_RANGE ...".
-struct PragmaSTDC_CX_LIMITED_RANGEHandler : public PragmaHandler {
- PragmaSTDC_CX_LIMITED_RANGEHandler() : PragmaHandler("CX_LIMITED_RANGE") {}
-
- void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
- Token &Tok) override {
- tok::OnOffSwitch OOS;
- PP.LexOnOffSwitch(OOS);
- }
-};
-
-/// PragmaSTDC_UnknownHandler - "\#pragma STDC ...".
-struct PragmaSTDC_UnknownHandler : public PragmaHandler {
- PragmaSTDC_UnknownHandler() = default;
-
- void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
- Token &UnknownTok) override {
- // C99 6.10.6p2, unknown forms are not allowed.
- PP.Diag(UnknownTok, diag::ext_stdc_pragma_ignored);
- }
-};
-
/// PragmaARCCFCodeAuditedHandler -
/// \#pragma clang arc_cf_code_audited begin/end
struct PragmaARCCFCodeAuditedHandler : public PragmaHandler {
@@ -1815,10 +1777,6 @@ void Preprocessor::RegisterBuiltinPragmas() {
ModuleHandler->AddPragma(new PragmaModuleBuildHandler());
ModuleHandler->AddPragma(new PragmaModuleLoadHandler());
- AddPragmaHandler("STDC", new PragmaSTDC_FENV_ACCESSHandler());
- AddPragmaHandler("STDC", new PragmaSTDC_CX_LIMITED_RANGEHandler());
- AddPragmaHandler("STDC", new PragmaSTDC_UnknownHandler());
-
// MS extensions.
if (LangOpts.MicrosoftExt) {
AddPragmaHandler(new PragmaWarningHandler());
@@ -1843,17 +1801,4 @@ void Preprocessor::IgnorePragmas() {
// in Preprocessor::RegisterBuiltinPragmas().
AddPragmaHandler("GCC", new EmptyPragmaHandler());
AddPragmaHandler("clang", new EmptyPragmaHandler());
- if (PragmaHandler *NS = PragmaHandlers->FindHandler("STDC")) {
- // Preprocessor::RegisterBuiltinPragmas() already registers
- // PragmaSTDC_UnknownHandler as the empty handler, so remove it first,
- // otherwise there will be an assert about a duplicate handler.
- PragmaNamespace *STDCNamespace = NS->getIfNamespace();
- assert(STDCNamespace &&
- "Invalid namespace, registered as a regular pragma handler!");
- if (PragmaHandler *Existing = STDCNamespace->FindHandler("", false)) {
- RemovePragmaHandler("STDC", Existing);
- delete Existing;
- }
- }
- AddPragmaHandler("STDC", new EmptyPragmaHandler());
}
OpenPOWER on IntegriCloud