<div dir="ltr">This breaks building with /GL (e.g. in an official chrome build). Clang will think "hey, I'll emit bitcode" and then link.exe or lib.exe will fall over. Mapping /GL to -flto guarantees that every build that uses /GL won't work, which doesn't seem that great. (Linker and static library archiver are called directly on Windows, not through the driver.)<div><br></div><div>Maybe -flto should be a core flag so that it can be passed to clang-cl explicitly, but mapping /GL to -flto seems wrong to me.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 5, 2015 at 7:09 PM, Peter Collingbourne <span dir="ltr"><<a href="mailto:peter@pcc.me.uk" target="_blank">peter@pcc.me.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: pcc<br>
Date: Fri Jun  5 21:09:34 2015<br>
New Revision: 239213<br>
<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D239213-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=kwFhIe0OKJtoTtdIPVv3sXjNxzYEnjIvh3chhoidMiw&s=sTLgy12kc9BzbIhto7hDfGmBCWWboq6-89XiOT5ek6A&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=239213&view=rev</a><br>
Log:<br>
clang-cl: Implement /GL in terms of -flto.<br>
<br>
No documentation yet; the linker needs more work.<br>
<br>
Differential Revision: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D10270&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=kwFhIe0OKJtoTtdIPVv3sXjNxzYEnjIvh3chhoidMiw&s=1D2IrkHmvOPMWXg3PveyNaRDTDC3C3vqvMd1ud5ewiE&e=" rel="noreferrer" target="_blank">http://reviews.llvm.org/D10270</a><br>
<br>
Modified:<br>
    cfe/trunk/include/clang/Driver/CLCompatOptions.td<br>
    cfe/trunk/lib/Driver/Driver.cpp<br>
    cfe/trunk/lib/Driver/Types.cpp<br>
    cfe/trunk/test/Driver/cl-outputs.c<br>
<br>
Modified: cfe/trunk/include/clang/Driver/CLCompatOptions.td<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Driver_CLCompatOptions.td-3Frev-3D239213-26r1-3D239212-26r2-3D239213-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=kwFhIe0OKJtoTtdIPVv3sXjNxzYEnjIvh3chhoidMiw&s=NJWQov8gt_MzNkwFJ114eR-7I5z3p1UOCGkbixdwdp4&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CLCompatOptions.td?rev=239213&r1=239212&r2=239213&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/include/clang/Driver/CLCompatOptions.td (original)<br>
+++ cfe/trunk/include/clang/Driver/CLCompatOptions.td Fri Jun  5 21:09:34 2015<br>
@@ -202,6 +202,7 @@ def _SLASH_Fi : CLCompileJoined<"Fi">,<br>
 def _SLASH_Fo : CLCompileJoined<"Fo">,<br>
   HelpText<"Set output object file, or directory (ends in / or \\)">,<br>
   MetaVarName<"<file or directory>">;<br>
+def _SLASH_GL : CLFlag<"GL">, Alias<flto>;<br>
 def _SLASH_LD : CLFlag<"LD">, HelpText<"Create DLL">;<br>
 def _SLASH_LDd : CLFlag<"LDd">, HelpText<"Create debug DLL">;<br>
 def _SLASH_link : CLRemainingArgs<"link">,<br>
@@ -286,7 +287,6 @@ def _SLASH_G2 : CLFlag<"G2">;<br>
 def _SLASH_Ge : CLFlag<"Ge">;<br>
 def _SLASH_Gh : CLFlag<"Gh">;<br>
 def _SLASH_GH : CLFlag<"GH">;<br>
-def _SLASH_GL : CLFlag<"GL">;<br>
 def _SLASH_GL_ : CLFlag<"GL-">;<br>
 def _SLASH_Gm : CLFlag<"Gm">;<br>
 def _SLASH_Gm_ : CLFlag<"Gm-">;<br>
<br>
Modified: cfe/trunk/lib/Driver/Driver.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Driver_Driver.cpp-3Frev-3D239213-26r1-3D239212-26r2-3D239213-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=kwFhIe0OKJtoTtdIPVv3sXjNxzYEnjIvh3chhoidMiw&s=WYaHShxJ37E11fYp9fHyLM0k6aoO4ApkRBaVNbdvFrI&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=239213&r1=239212&r2=239213&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Driver/Driver.cpp (original)<br>
+++ cfe/trunk/lib/Driver/Driver.cpp Fri Jun  5 21:09:34 2015<br>
@@ -1744,7 +1744,7 @@ const char *Driver::GetNamedOutputPath(C<br>
   // Determine what the derived output name should be.<br>
   const char *NamedOutput;<br>
<br>
-  if (JA.getType() == types::TY_Object &&<br>
+  if ((JA.getType() == types::TY_Object || JA.getType() == types::TY_LTO_BC) &&<br>
       C.getArgs().hasArg(options::OPT__SLASH_Fo, options::OPT__SLASH_o)) {<br>
     // The /Fo or /o flag decides the object filename.<br>
     StringRef Val = C.getArgs().getLastArg(options::OPT__SLASH_Fo,<br>
<br>
Modified: cfe/trunk/lib/Driver/Types.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Driver_Types.cpp-3Frev-3D239213-26r1-3D239212-26r2-3D239213-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=kwFhIe0OKJtoTtdIPVv3sXjNxzYEnjIvh3chhoidMiw&s=4S0fjojgWgUQqcPClC0BYIZAXB1hDhZ0qj6f6J1zzEk&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Types.cpp?rev=239213&r1=239212&r2=239213&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Driver/Types.cpp (original)<br>
+++ cfe/trunk/lib/Driver/Types.cpp Fri Jun  5 21:09:34 2015<br>
@@ -45,7 +45,7 @@ types::ID types::getPreprocessedType(ID<br>
 }<br>
<br>
 const char *types::getTypeTempSuffix(ID Id, bool CLMode) {<br>
-  if (Id == TY_Object && CLMode)<br>
+  if ((Id == TY_Object || Id == TY_LTO_BC) && CLMode)<br>
     return "obj";<br>
   if (Id == TY_Image && CLMode)<br>
     return "exe";<br>
<br>
Modified: cfe/trunk/test/Driver/cl-outputs.c<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Driver_cl-2Doutputs.c-3Frev-3D239213-26r1-3D239212-26r2-3D239213-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=kwFhIe0OKJtoTtdIPVv3sXjNxzYEnjIvh3chhoidMiw&s=wWbCbefyRC2UCr_VZB64yYzw6W1Mjx58LhYWEnXl0X8&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-outputs.c?rev=239213&r1=239212&r2=239213&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Driver/cl-outputs.c (original)<br>
+++ cfe/trunk/test/Driver/cl-outputs.c Fri Jun  5 21:09:34 2015<br>
@@ -273,3 +273,9 @@<br>
 // RUN: %clang_cl /P /Fifoo.x /obar.x -### -- %s 2>&1 | FileCheck -check-prefix=FioRACE2 %s<br>
 // FioRACE2: "-E"<br>
 // FioRACE2: "-o" "bar.x"<br>
+<br>
+// RUN: %clang_cl /c /GL -### -- %s 2>&1 | FileCheck -check-prefix=LTO-DEFAULT %s<br>
+// LTO-DEFAULT: "-emit-llvm-bc"{{.*}}"-o" "cl-outputs.obj"<br>
+<br>
+// RUN: %clang_cl /c /GL /Fofoo -### -- %s 2>&1 | FileCheck -check-prefix=LTO-FO %s<br>
+// LTO-FO: "-emit-llvm-bc"{{.*}}"-o" "foo.obj"<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>