From 1243a80d054ecb7c58ffad7bd10a3e1c52342d5c Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Sat, 2 Apr 2016 19:10:07 +0000 Subject: [PATCH] clang-cl: Don't skip i_group flags other than -include when building pchs. Before this change, e.g. -isystem flags in front of the /FI corresponding to the pch file would be incorrectly ignored. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@265238 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Tools.cpp | 3 ++- test/Driver/cl-pch-search.cpp | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index b7981c045e..824ee72dcd 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -416,7 +416,8 @@ void Clang::AddPreprocessingOptions(Compilation &C, const JobAction &JA, for (const Arg *A : Args.filtered(options::OPT_clang_i_Group)) { ++AI; - if (getToolChain().getDriver().IsCLMode()) { + if (getToolChain().getDriver().IsCLMode() && + A->getOption().matches(options::OPT_include)) { // In clang-cl mode, /Ycfoo.h means that all code up to a foo.h // include is compiled into foo.h, and everything after goes into // the .obj file. /Yufoo.h means that all includes prior to and including diff --git a/test/Driver/cl-pch-search.cpp b/test/Driver/cl-pch-search.cpp index 118cf19efb..fd503f1f80 100644 --- a/test/Driver/cl-pch-search.cpp +++ b/test/Driver/cl-pch-search.cpp @@ -4,3 +4,7 @@ // REQUIRES: x86-registered-target // Check that pchfile.h next to to pchfile.cc is found correctly. // RUN: %clang_cl -Werror /Ycpchfile.h /FIpchfile.h /c /Fo%t.obj /Fp%t.pch -- %S/Inputs/pchfile.cpp + +// Check that i_group flags other than -include aren't skipped (e.g. -isystem). +#include "header0.h" +// RUN: %clang_cl -Werror -isystem%S/Inputs /Yupchfile.h /FIpchfile.h /c /Fo%t.obj /Fp%t.pch -- %s -- 2.40.0