From 1edb905e823c5eabd3c934ef0129c5387bc3f9fb Mon Sep 17 00:00:00 2001 From: Matt Davis Date: Sat, 27 Jan 2018 00:25:29 +0000 Subject: [PATCH] Always allow "#pragma region". Summary: Both MS and PS4 targets are capable of recognizing the existence of: #pragma region, #pragma endregion. Since this pragma is only a hint for certain editors, and has no logic, it seems helpful to permit this pragma in all cases, not just MS compatibility mode. Reviewers: rnk, rsmith, majnemer Reviewed By: majnemer Subscribers: Quuxplusone, probinson, majnemer, cfe-commits Differential Revision: https://reviews.llvm.org/D42248 llvm-svn: 323577 --- clang/lib/Lex/Pragma.cpp | 6 ++++-- clang/test/Frontend/region-pragmas.c | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 clang/test/Frontend/region-pragmas.c diff --git a/clang/lib/Lex/Pragma.cpp b/clang/lib/Lex/Pragma.cpp index d2abc5acc098..b9be03f4f20d 100644 --- a/clang/lib/Lex/Pragma.cpp +++ b/clang/lib/Lex/Pragma.cpp @@ -1776,13 +1776,15 @@ void Preprocessor::RegisterBuiltinPragmas() { ModuleHandler->AddPragma(new PragmaModuleEndHandler()); ModuleHandler->AddPragma(new PragmaModuleBuildHandler()); ModuleHandler->AddPragma(new PragmaModuleLoadHandler()); + + // Add region pragmas. + AddPragmaHandler(new PragmaRegionHandler("region")); + AddPragmaHandler(new PragmaRegionHandler("endregion")); // MS extensions. if (LangOpts.MicrosoftExt) { AddPragmaHandler(new PragmaWarningHandler()); AddPragmaHandler(new PragmaIncludeAliasHandler()); - AddPragmaHandler(new PragmaRegionHandler("region")); - AddPragmaHandler(new PragmaRegionHandler("endregion")); } // Pragmas added by plugins diff --git a/clang/test/Frontend/region-pragmas.c b/clang/test/Frontend/region-pragmas.c new file mode 100644 index 000000000000..8d929e8414fd --- /dev/null +++ b/clang/test/Frontend/region-pragmas.c @@ -0,0 +1,5 @@ +// RUN: %clang_cc1 -Wall -verify %s +// expected-no-diagnostics + +#pragma region foo +#pragma endregion foo