Author: erichkeane Date: Fri Aug 17 06:43:39 2018 New Revision: 340025 URL: http://llvm.org/viewvc/llvm-project?rev=340025&view=rev Log: Fix for bug 38508 - Don't do PCH processing when only generating preprocessor output
This clang-cl driver change removes the PCH options when we are only generating preprocessed output. This is similar to the behavior of Y-. Patch by: mikerice Differential Revision: https://reviews.llvm.org/D50640 Added: cfe/trunk/test/PCH/Inputs/pch-through-use3c.cpp cfe/trunk/test/PCH/Inputs/pch-through3c.h cfe/trunk/test/PCH/pch-through3c.cpp Modified: cfe/trunk/lib/Driver/Driver.cpp cfe/trunk/test/Driver/cl-pch.cpp Modified: cfe/trunk/lib/Driver/Driver.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=340025&r1=340024&r2=340025&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Driver.cpp (original) +++ cfe/trunk/lib/Driver/Driver.cpp Fri Aug 17 06:43:39 2018 @@ -3010,9 +3010,10 @@ void Driver::BuildActions(Compilation &C Args.eraseArg(options::OPT__SLASH_Yc); YcArg = nullptr; } - if (Args.hasArg(options::OPT__SLASH_Y_)) { - // /Y- disables all pch handling. Rather than check for it everywhere, - // just remove clang-cl pch-related flags here. + if (FinalPhase == phases::Preprocess || Args.hasArg(options::OPT__SLASH_Y_)) { + // If only preprocessing or /Y- is used, all pch handling is disabled. + // Rather than check for it everywhere, just remove clang-cl pch-related + // flags here. Args.eraseArg(options::OPT__SLASH_Fp); Args.eraseArg(options::OPT__SLASH_Yc); Args.eraseArg(options::OPT__SLASH_Yu); Modified: cfe/trunk/test/Driver/cl-pch.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-pch.cpp?rev=340025&r1=340024&r2=340025&view=diff ============================================================================== --- cfe/trunk/test/Driver/cl-pch.cpp (original) +++ cfe/trunk/test/Driver/cl-pch.cpp Fri Aug 17 06:43:39 2018 @@ -345,3 +345,24 @@ // CHECK-NoSourceTP: pchfile.pch // CHECK-NoSourceTP: -x // CHECK-NoSourceTP: "c++" + +// If only preprocessing, PCH options are ignored. +// RUN: %clang_cl /P /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-YC-P %s +// CHECK-YC-P-NOT: -emit-pch +// CHECK-YC-P-NOT: -include-pch + +// RUN: %clang_cl /E /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-YC-E %s +// CHECK-YC-E-NOT: -emit-pch +// CHECK-YC-E-NOT: -include-pch + +// RUN: %clang_cl /P /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-YU-P %s +// CHECK-YU-P-NOT: -emit-pch +// CHECK-YU-P-NOT: -include-pch + +// RUN: %clang_cl /E /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-YU-E %s +// CHECK-YU-E-NOT: -emit-pch +// CHECK-YU-E-NOT: -include-pch Added: cfe/trunk/test/PCH/Inputs/pch-through-use3c.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/Inputs/pch-through-use3c.cpp?rev=340025&view=auto ============================================================================== --- cfe/trunk/test/PCH/Inputs/pch-through-use3c.cpp (added) +++ cfe/trunk/test/PCH/Inputs/pch-through-use3c.cpp Fri Aug 17 06:43:39 2018 @@ -0,0 +1,2 @@ +int a = A; +// expected-no-diagnostics Added: cfe/trunk/test/PCH/Inputs/pch-through3c.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/Inputs/pch-through3c.h?rev=340025&view=auto ============================================================================== --- cfe/trunk/test/PCH/Inputs/pch-through3c.h (added) +++ cfe/trunk/test/PCH/Inputs/pch-through3c.h Fri Aug 17 06:43:39 2018 @@ -0,0 +1 @@ +#define A 1 Added: cfe/trunk/test/PCH/pch-through3c.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/pch-through3c.cpp?rev=340025&view=auto ============================================================================== --- cfe/trunk/test/PCH/pch-through3c.cpp (added) +++ cfe/trunk/test/PCH/pch-through3c.cpp Fri Aug 17 06:43:39 2018 @@ -0,0 +1,8 @@ +// RUN: %clang_cc1 -I %S -emit-pch \ +// RUN: -include Inputs/pch-through3c.h \ +// RUN: -pch-through-header=Inputs/pch-through3c.h -o %t.3c %s + +// RUN: %clang_cc1 -verify -I %S -include-pch %t.3c \ +// RUN: -include Inputs/pch-through3c.h \ +// RUN: -pch-through-header=Inputs/pch-through3c.h \ +// RUN: %S/Inputs/pch-through-use3c.cpp 2>&1 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits