From 8ee6a0dcc985c65bf5fd61a63e3f86e3ac516f5e Mon Sep 17 00:00:00 2001 From: Lubos Lunak Date: Sat, 20 Jul 2013 14:30:01 +0000 Subject: [PATCH] avoid bogus warnings about "unknown" pragmas with -frewrite-includes (pr#14831) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186764 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Rewrite/Frontend/InclusionRewriter.cpp | 8 ++++++++ test/Frontend/rewrite-includes-warnings.c | 4 ++++ 2 files changed, 12 insertions(+) create mode 100644 test/Frontend/rewrite-includes-warnings.c diff --git a/lib/Rewrite/Frontend/InclusionRewriter.cpp b/lib/Rewrite/Frontend/InclusionRewriter.cpp index 0c3269a047..93ad9b88d6 100644 --- a/lib/Rewrite/Frontend/InclusionRewriter.cpp +++ b/lib/Rewrite/Frontend/InclusionRewriter.cpp @@ -16,6 +16,7 @@ #include "clang/Basic/SourceManager.h" #include "clang/Frontend/PreprocessorOutputOptions.h" #include "clang/Lex/HeaderSearch.h" +#include "clang/Lex/Pragma.h" #include "clang/Lex/Preprocessor.h" #include "llvm/ADT/SmallString.h" #include "llvm/Support/raw_ostream.h" @@ -503,6 +504,13 @@ void clang::RewriteIncludesInInput(Preprocessor &PP, raw_ostream *OS, InclusionRewriter *Rewrite = new InclusionRewriter(PP, *OS, Opts.ShowLineMarkers); PP.addPPCallbacks(Rewrite); + // Ignore all pragmas, otherwise there will be warnings about unknown pragmas + // (because there's nothing to handle them). + PP.AddPragmaHandler(new EmptyPragmaHandler()); + // Ignore also all pragma in all namespaces created + // in Preprocessor::RegisterBuiltinPragmas(). + PP.AddPragmaHandler("GCC", new EmptyPragmaHandler()); + PP.AddPragmaHandler("clang", new EmptyPragmaHandler()); // First let the preprocessor process the entire file and call callbacks. // Callbacks will record which #include's were actually performed. diff --git a/test/Frontend/rewrite-includes-warnings.c b/test/Frontend/rewrite-includes-warnings.c new file mode 100644 index 0000000000..1fb98db301 --- /dev/null +++ b/test/Frontend/rewrite-includes-warnings.c @@ -0,0 +1,4 @@ +// RUN: %clang_cc1 -verify -Wall -Wextra -E -frewrite-includes %s +// expected-no-diagnostics + +#pragma GCC visibility push (default) -- 2.40.0