[PATCH] D90646: [clang] Add warning when `-include-pch` is passed multiple times
Keith Smiley via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 25 15:11:45 PST 2021
keith updated this revision to Diff 319138.
keith added a comment.
Herald added a reviewer: jansvoboda11.
Add group to warning
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D90646/new/
https://reviews.llvm.org/D90646
Files:
clang/include/clang/Basic/DiagnosticDriverKinds.td
clang/lib/Frontend/CompilerInvocation.cpp
clang/test/PCH/multiple-include-pch-warning.c
Index: clang/test/PCH/multiple-include-pch-warning.c
===================================================================
--- /dev/null
+++ clang/test/PCH/multiple-include-pch-warning.c
@@ -0,0 +1,5 @@
+// RUN: %clang_cc1 -emit-pch -o %t1.pch %s
+// RUN: %clang_cc1 -emit-pch -o %t2.pch %s
+// RUN: %clang_cc1 %s -include-pch %t1.pch -include-pch %t2.pch 2>&1 | FileCheck %s
+
+// CHECK: warning: -include-pch passed multiple times but only the last '{{.*\.pch}}' is being used
Index: clang/lib/Frontend/CompilerInvocation.cpp
===================================================================
--- clang/lib/Frontend/CompilerInvocation.cpp
+++ clang/lib/Frontend/CompilerInvocation.cpp
@@ -2779,6 +2779,14 @@
static void ParsePreprocessorArgs(PreprocessorOptions &Opts, ArgList &Args,
DiagnosticsEngine &Diags,
frontend::ActionKind Action) {
+ auto allPchFiles = Args.getAllArgValues(OPT_include_pch);
+ if (!allPchFiles.empty()) {
+ Opts.ImplicitPCHInclude = std::string(allPchFiles.back());
+ if (allPchFiles.size() > 1)
+ Diags.Report(diag::warn_drv_multiple_include_pch)
+ << Opts.ImplicitPCHInclude;
+ }
+
Opts.PCHWithHdrStop = Args.hasArg(OPT_pch_through_hdrstop_create) ||
Args.hasArg(OPT_pch_through_hdrstop_use);
Index: clang/include/clang/Basic/DiagnosticDriverKinds.td
===================================================================
--- clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -332,6 +332,9 @@
InGroup<Deprecated>;
def warn_drv_pch_not_first_include : Warning<
"precompiled header '%0' was ignored because '%1' is not first '-include'">;
+def warn_drv_multiple_include_pch : Warning<
+ "-include-pch passed multiple times but only the last '%0' is being used">,
+ InGroup<UnusedCommandLineArgument>;
def warn_missing_sysroot : Warning<"no such sysroot directory: '%0'">,
InGroup<DiagGroup<"missing-sysroot">>;
def warn_incompatible_sysroot : Warning<"using sysroot for '%0' but targeting '%1'">,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D90646.319138.patch
Type: text/x-patch
Size: 2119 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210125/82f6b030/attachment.bin>
More information about the cfe-commits
mailing list