[cfe-commits] r116605 - in /cfe/trunk: include/clang/Basic/DiagnosticDriverKinds.td include/clang/Driver/Options.td lib/Driver/Tools.cpp test/Driver/pth.c

Argyrios Kyrtzidis akyrtzi at gmail.com
Fri Oct 15 11:49:01 PDT 2010


Author: akirtzidis
Date: Fri Oct 15 13:49:01 2010
New Revision: 116605

URL: http://llvm.org/viewvc/llvm-project?rev=116605&view=rev
Log:
Add '-include-pch' option to the driver, so it can get passed to the cc1 driver.

Modified:
    cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td
    cfe/trunk/include/clang/Driver/Options.td
    cfe/trunk/lib/Driver/Tools.cpp
    cfe/trunk/test/Driver/pth.c

Modified: cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td?rev=116605&r1=116604&r2=116605&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td Fri Oct 15 13:49:01 2010
@@ -102,5 +102,7 @@
   "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'">;
 
 }

Modified: cfe/trunk/include/clang/Driver/Options.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=116605&r1=116604&r2=116605&view=diff
==============================================================================
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Fri Oct 15 13:49:01 2010
@@ -426,6 +426,7 @@
 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]>;

Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=116605&r1=116604&r2=116605&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Fri Oct 15 13:49:01 2010
@@ -256,6 +256,16 @@
       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

Modified: cfe/trunk/test/Driver/pth.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/pth.c?rev=116605&r1=116604&r2=116605&view=diff
==============================================================================
--- cfe/trunk/test/Driver/pth.c (original)
+++ cfe/trunk/test/Driver/pth.c Fri Oct 15 13:49:01 2010
@@ -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"





More information about the cfe-commits mailing list