Re: r280133 - PR30195: Fix clang-cl attempting to precompile bogus (non-precompilable) input types.

2016-08-31 Thread Renato Golin via cfe-commits
Thanks!

On 31 August 2016 at 01:02, Richard Smith  wrote:
> Hopefully r280178 should fix this.
>
> On Tue, Aug 30, 2016 at 4:00 PM, Renato Golin 
> wrote:
>>
>> On 30 August 2016 at 22:44, Renato Golin  wrote:
>> > This breakage was hidden by Duncan's build breakage:
>> >
>> > http://lab.llvm.org:8011/builders/clang-cmake-aarch64-42vma/builds/11172
>>
>> Also,
>> http://lab.llvm.org:8011/builders/clang-cmake-aarch64-quick/builds/9813
>>
>> Same error...
>>
>> cheers,
>> --renato
>
>
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: r280133 - PR30195: Fix clang-cl attempting to precompile bogus (non-precompilable) input types.

2016-08-30 Thread Richard Smith via cfe-commits
Hopefully r280178 should fix this.

On Tue, Aug 30, 2016 at 4:00 PM, Renato Golin 
wrote:

> On 30 August 2016 at 22:44, Renato Golin  wrote:
> > This breakage was hidden by Duncan's build breakage:
> >
> > http://lab.llvm.org:8011/builders/clang-cmake-aarch64-42vma/builds/11172
>
> Also, http://lab.llvm.org:8011/builders/clang-cmake-aarch64-
> quick/builds/9813
>
> Same error...
>
> cheers,
> --renato
>
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: r280133 - PR30195: Fix clang-cl attempting to precompile bogus (non-precompilable) input types.

2016-08-30 Thread Renato Golin via cfe-commits
On 30 August 2016 at 22:44, Renato Golin  wrote:
> This breakage was hidden by Duncan's build breakage:
>
> http://lab.llvm.org:8011/builders/clang-cmake-aarch64-42vma/builds/11172

Also, http://lab.llvm.org:8011/builders/clang-cmake-aarch64-quick/builds/9813

Same error...

cheers,
--renato
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: r280133 - PR30195: Fix clang-cl attempting to precompile bogus (non-precompilable) input types.

2016-08-30 Thread Renato Golin via cfe-commits
On 30 August 2016 at 19:55, Richard Smith via cfe-commits
 wrote:
> Author: rsmith
> Date: Tue Aug 30 13:55:16 2016
> New Revision: 280133
>
> URL: http://llvm.org/viewvc/llvm-project?rev=280133=rev
> Log:
> PR30195: Fix clang-cl attempting to precompile bogus (non-precompilable) 
> input types.
>
> Modified:
> cfe/trunk/include/clang/Driver/Types.h
> cfe/trunk/lib/Driver/Driver.cpp
> cfe/trunk/lib/Driver/Types.cpp
> cfe/trunk/test/Driver/cl-pch.c

Hi Richard,

This breakage was hidden by Duncan's build breakage:

http://lab.llvm.org:8011/builders/clang-cmake-aarch64-42vma/builds/11172

Just "Exit code 254"

http://lab.llvm.org:8011/builders/clang-cmake-aarch64-42vma/builds/11172/steps/ninja%20check%201/logs/FAIL%3A%20Clang%3A%3Acl-pch.c

Can you have a look, pls?

cheers,
--renato
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r280133 - PR30195: Fix clang-cl attempting to precompile bogus (non-precompilable) input types.

2016-08-30 Thread Richard Smith via cfe-commits
Author: rsmith
Date: Tue Aug 30 13:55:16 2016
New Revision: 280133

URL: http://llvm.org/viewvc/llvm-project?rev=280133=rev
Log:
PR30195: Fix clang-cl attempting to precompile bogus (non-precompilable) input 
types.

Modified:
cfe/trunk/include/clang/Driver/Types.h
cfe/trunk/lib/Driver/Driver.cpp
cfe/trunk/lib/Driver/Types.cpp
cfe/trunk/test/Driver/cl-pch.c

Modified: cfe/trunk/include/clang/Driver/Types.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Types.h?rev=280133=280132=280133=diff
==
--- cfe/trunk/include/clang/Driver/Types.h (original)
+++ cfe/trunk/include/clang/Driver/Types.h Tue Aug 30 13:55:16 2016
@@ -90,6 +90,10 @@ namespace types {
   /// C type (used for clang++ emulation of g++ behaviour)
   ID lookupCXXTypeForCType(ID Id);
 
+  /// Lookup header file input type that corresponds to given
+  /// source file type (used for clang-cl emulation of \Yc).
+  ID lookupHeaderTypeForSourceType(ID Id);
+
 } // end namespace types
 } // end namespace driver
 } // end namespace clang

Modified: cfe/trunk/lib/Driver/Driver.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=280133=280132=280133=diff
==
--- cfe/trunk/lib/Driver/Driver.cpp (original)
+++ cfe/trunk/lib/Driver/Driver.cpp Tue Aug 30 13:55:16 2016
@@ -1685,12 +1685,14 @@ void Driver::BuildActions(Compilation 
 if (YcArg) {
   // Add a separate precompile phase for the compile phase.
   if (FinalPhase >= phases::Compile) {
+const types::ID HeaderType = lookupHeaderTypeForSourceType(InputType);
 llvm::SmallVector PCHPL;
-types::getCompilationPhases(types::TY_CXXHeader, PCHPL);
+types::getCompilationPhases(HeaderType, PCHPL);
 Arg *PchInputArg = MakeInputArg(Args, Opts, YcArg->getValue());
 
 // Build the pipeline for the pch file.
-Action *ClangClPch = C.MakeAction(*PchInputArg, 
InputType);
+Action *ClangClPch =
+C.MakeAction(*PchInputArg, HeaderType);
 for (phases::ID Phase : PCHPL)
   ClangClPch = ConstructPhaseAction(C, Args, Phase, ClangClPch);
 assert(ClangClPch);
@@ -1812,6 +1814,8 @@ Action *Driver::ConstructPhaseAction(Com
 return C.MakeAction(Input, OutputTy);
   }
   case phases::Precompile: {
+assert(onlyPrecompileType(Input->getType()) &&
+   "asked to precompile non-precompilable type");
 types::ID OutputTy = types::TY_PCH;
 if (Args.hasArg(options::OPT_fsyntax_only)) {
   // Syntax checks should not emit a PCH file

Modified: cfe/trunk/lib/Driver/Types.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Types.cpp?rev=280133=280132=280133=diff
==
--- cfe/trunk/lib/Driver/Types.cpp (original)
+++ cfe/trunk/lib/Driver/Types.cpp Tue Aug 30 13:55:16 2016
@@ -259,3 +259,21 @@ ID types::lookupCXXTypeForCType(ID Id) {
 return types::TY_PP_CXXHeader;
   }
 }
+
+ID types::lookupHeaderTypeForSourceType(ID Id) {
+  switch (Id) {
+  default:
+return Id;
+
+  case types::TY_C:
+return types::TY_CHeader;
+  case types::TY_CXX:
+return types::TY_CXXHeader;
+  case types::TY_ObjC:
+return types::TY_ObjCHeader;
+  case types::TY_ObjCXX:
+return types::TY_ObjCXXHeader;
+  case types::TY_CL:
+return types::TY_CLHeader;
+  }
+}

Modified: cfe/trunk/test/Driver/cl-pch.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-pch.c?rev=280133=280132=280133=diff
==
--- cfe/trunk/test/Driver/cl-pch.c (original)
+++ cfe/trunk/test/Driver/cl-pch.c Tue Aug 30 13:55:16 2016
@@ -1,3 +1,6 @@
+// RUN: rm -rf %t
+// RUN: mkdir %t
+//
 // Note: %s and %S must be preceded by --, otherwise it may be interpreted as a
 // command-line option, e.g. on Mac where %s is commonly under /Users.
 
@@ -5,41 +8,41 @@
 // a few things for .c inputs.
 
 // /Yc with a .c file should build a c pch file.
-// RUN: %clang_cl -Werror /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \
+// RUN: %clang_cl -Werror /Yc%S/Inputs/pchfile.h /FI%S/Inputs/pchfile.h /c 
/Fo%t/pchfile.obj /Fp%t/pchfile.pch -v -- %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-YC %s
 // CHECK-YC: cc1
-// CHECK-YC: -emit-pch
-// CHECK-YC: -o
-// CHECK-YC: pchfile.pch
-// CHECK-YC: -x
-// CHECK-YC: "c"
+// CHECK-YC-SAME: -emit-pch
+// CHECK-YC-SAME: -o
+// CHECK-YC-SAME: pchfile.pch
+// CHECK-YC-SAME: -x
+// CHECK-YC-SAME: c-header
 
 // But not if /TP changes the input language to C++.
-// RUN: %clang_cl /TP -Werror /Ycpchfile.h /FIpchfile.h /c -### -- %s 2>&1 \
+// RUN: %clang_cl /TP -Werror /Yc%S/Inputs/pchfile.h /FI%S/Inputs/pchfile.h /c 
/Fo%t/pchfile.obj /Fp%t/pchfile.pch -v -- %s 2>&1 \
 // RUN:   |