forked from OSchip/llvm-project
Add '-include-pch' option to the driver, so it can get passed to the cc1 driver.
llvm-svn: 116605
This commit is contained in:
parent
00ce8deae6
commit
ffbba26285
|
@ -102,5 +102,7 @@ def warn_drv_objc_gc_unsupported : Warning<
|
|||
"Objective-C garbage collection is not supported on this platform, ignoring '%0'">;
|
||||
def warn_drv_pch_not_first_include : Warning<
|
||||
"precompiled header '%0' was ignored because '%1' is not first '-include'">;
|
||||
def warn_drv_pch_missing_language : Warning<
|
||||
"ignoring argument '%0' due to missing precompiled header '%1' for language '%2'">;
|
||||
|
||||
}
|
||||
|
|
|
@ -426,6 +426,7 @@ def iframework : JoinedOrSeparate<"-iframework">, Group<clang_i_Group>;
|
|||
def imacros : JoinedOrSeparate<"-imacros">, Group<clang_i_Group>;
|
||||
def image__base : Separate<"-image_base">;
|
||||
def include_ : JoinedOrSeparate<"-include">, Group<clang_i_Group>, EnumName<"include">;
|
||||
def include_pch : Separate<"-include-pch">, Group<clang_i_Group>;
|
||||
def init : Separate<"-init">;
|
||||
def install__name : Separate<"-install_name">;
|
||||
def integrated_as : Flag<"-integrated-as">, Flags<[DriverOption]>;
|
||||
|
|
|
@ -256,6 +256,16 @@ void Clang::AddPreprocessingOptions(const Driver &D,
|
|||
if (FoundPCH || FoundPTH) {
|
||||
if (IsFirstImplicitInclude) {
|
||||
A->claim();
|
||||
if (P.isDirectory()) {
|
||||
// Expect to find a precompiled header matching the current input type
|
||||
P.appendComponent(types::getTypeName(Inputs[0].getType()));
|
||||
if (!P.exists()) {
|
||||
D.Diag(clang::diag::warn_drv_pch_missing_language)
|
||||
<< A->getAsString(Args) << P.str()
|
||||
<< types::getTypeName(Inputs[0].getType());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (UsePCH)
|
||||
CmdArgs.push_back("-include-pch");
|
||||
else
|
||||
|
|
|
@ -10,3 +10,24 @@
|
|||
// RUN: FileCheck -check-prefix CHECK2 -input-file %t.log %s
|
||||
|
||||
// CHECK2: "{{.*}}/clang{{.*}}" "-cc1" {{.*}}"-include-pth" "{{.*}}.h.pth" {{.*}}"-x" "c" "{{.*}}pth.c"
|
||||
|
||||
// RUN: mkdir -p %t.pth
|
||||
// RUN: %clang -ccc-pch-is-pth -x c-header %s -o %t.pth/c -### 2> %t.log
|
||||
// RUN: FileCheck -check-prefix CHECK3 -input-file %t.log %s
|
||||
|
||||
// CHECK3: "{{.*}}/clang{{.*}}" "-cc1" {{.*}} "-o" "{{.*}}.pth/c" "-x" "c-header" "{{.*}}pth.c"
|
||||
|
||||
// RUN: rm -f %t.pth/c
|
||||
// RUN: %clang -ccc-pch-is-pth -E -include %t %s -### 2> %t.log
|
||||
// RUN: echo "DONE" >> %t.log
|
||||
// RUN: FileCheck -check-prefix CHECK4 -input-file %t.log %s
|
||||
|
||||
// CHECK4: {{.*}} ignoring argument '-include {{.*}}' due to missing precompiled header '{{.*}}.pth/c' for language 'c'
|
||||
// CHECK4-NOT: -include-pth
|
||||
// CHECK4: DONE
|
||||
|
||||
// RUN: touch %t.pth/c
|
||||
// RUN: %clang -ccc-pch-is-pth -E -include %t %s -### 2> %t.log
|
||||
// RUN: FileCheck -check-prefix CHECK5 -input-file %t.log %s
|
||||
|
||||
// CHECK5: "{{.*}}/clang{{.*}}" "-cc1" {{.*}}"-include-pth" "{{.*}}.pth/c" {{.*}}"-x" "c" "{{.*}}pth.c"
|
||||
|
|
Loading…
Reference in New Issue