<div dir="ltr">Ah yes, I was confused. No need to pick up r257984. Sorry for the noise.</div><br><div class="gmail_quote"><div dir="ltr">On Wed, Jan 20, 2016 at 8:54 AM Hans Wennborg <<a href="mailto:hans@chromium.org">hans@chromium.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, Jan 19, 2016 at 3:43 PM, NAKAMURA Takumi <<a href="mailto:geek4civic@gmail.com" target="_blank">geek4civic@gmail.com</a>> wrote:<br>
> May I push it (llvm and clang) into release_38?<br>
> It depends on r257718.<br>
<br>
r257718 was committed after the branch. Are you suggesting we merge that too?<br>
<br>
This looks like a pretty significant change. Can't it wait until 3.9?<br>
<br>
<br>
> 2016-01-16 12:48 GMT+09:00 NAKAMURA Takumi <<a href="mailto:geek4civic@gmail.com" target="_blank">geek4civic@gmail.com</a>>:<br>
>> chapuni committed rL257984: [Cygwin] Use -femulated-tls by default since r257718 introduced the new pass..<br>
>><br>
>> [Cygwin] Use -femulated-tls by default since r257718 introduced the new pass.<br>
>><br>
>> FIXME: Add more targets to use emutls into clang/test/Driver/emulated-tls.cpp.<br>
>> FIXME: Add cygwin tests into llvm/test/CodeGen/X86. Working in progress.<br>
>><br>
>><br>
>> Files:<br>
>>   /cfe/trunk/docs/ReleaseNotes.rst<br>
>>   /cfe/trunk/lib/Driver/Tools.cpp<br>
>>   /cfe/trunk/test/Driver/emulated-tls.cpp<br>
>>   /llvm/trunk/lib/Target/X86/X86ISelLowering.cpp<br>
>><br>
>> PATCH<br>
>><br>
>> Index: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp<br>
>> ===================================================================<br>
>> --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp       (revision 257983)<br>
>> +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp       (revision 257984)<br>
>> @@ -12477,17 +12477,13 @@<br>
>><br>
>>    GlobalAddressSDNode *GA = cast<GlobalAddressSDNode>(Op);<br>
>><br>
>> -  // Cygwin uses emutls.<br>
>> -  // FIXME: It may be EmulatedTLS-generic also for X86-Android.<br>
>> -  if (Subtarget->isTargetWindowsCygwin())<br>
>> +  if (DAG.getTarget().Options.EmulatedTLS)<br>
>>      return LowerToTLSEmulatedModel(GA, DAG);<br>
>><br>
>>    const GlobalValue *GV = GA->getGlobal();<br>
>>    auto PtrVT = getPointerTy(DAG.getDataLayout());<br>
>><br>
>>    if (Subtarget->isTargetELF()) {<br>
>> -    if (DAG.getTarget().Options.EmulatedTLS)<br>
>> -      return LowerToTLSEmulatedModel(GA, DAG);<br>
>>      TLSModel::Model model = DAG.getTarget().getTLSModel(GV);<br>
>>      switch (model) {<br>
>>        case TLSModel::GeneralDynamic:<br>
>> Index: cfe/trunk/test/Driver/emulated-tls.cpp<br>
>> ===================================================================<br>
>> --- cfe/trunk/test/Driver/emulated-tls.cpp      (revision 0)<br>
>> +++ cfe/trunk/test/Driver/emulated-tls.cpp      (revision 257984)<br>
>> @@ -0,0 +1,5 @@<br>
>> +// Cygwin uses emutls. Clang should pass -femulated-tls to cc1 and cc1 should pass EmulatedTLS to LLVM CodeGen.<br>
>> +// FIXME: Add more targets here to use emutls.<br>
>> +// RUN: %clang -### -std=c++11 -target i686-pc-cygwin %s 2>&1 | FileCheck %s<br>
>> +<br>
>> +// CHECK: "-cc1" {{.*}}"-femulated-tls"<br>
>> Index: cfe/trunk/docs/ReleaseNotes.rst<br>
>> ===================================================================<br>
>> --- cfe/trunk/docs/ReleaseNotes.rst     (revision 257983)<br>
>> +++ cfe/trunk/docs/ReleaseNotes.rst     (revision 257984)<br>
>> @@ -74,6 +74,8 @@<br>
>><br>
>>  Clang's support for building native Windows programs ...<br>
>><br>
>> +TLS is enabled for Cygwin defaults to -femulated-tls.<br>
>> +<br>
>><br>
>>  C Language Changes in Clang<br>
>>  ---------------------------<br>
>> Index: cfe/trunk/lib/Driver/Tools.cpp<br>
>> ===================================================================<br>
>> --- cfe/trunk/lib/Driver/Tools.cpp      (revision 257983)<br>
>> +++ cfe/trunk/lib/Driver/Tools.cpp      (revision 257984)<br>
>> @@ -4597,7 +4597,7 @@<br>
>>    Args.AddLastArg(CmdArgs, options::OPT_fno_operator_names);<br>
>>    // Emulated TLS is enabled by default on Android, and can be enabled manually<br>
>>    // with -femulated-tls.<br>
>> -  bool EmulatedTLSDefault = Triple.isAndroid();<br>
>> +  bool EmulatedTLSDefault = Triple.isAndroid() || Triple.isWindowsCygwinEnvironment();<br>
>>    if (Args.hasFlag(options::OPT_femulated_tls, options::OPT_fno_emulated_tls,<br>
>>                     EmulatedTLSDefault))<br>
>>      CmdArgs.push_back("-femulated-tls");<br>
>><br>
>> Users:<br>
>>   chapuni (Author)<br>
>><br>
>> <a href="http://reviews.llvm.org/rL257984" rel="noreferrer" target="_blank">http://reviews.llvm.org/rL257984</a><br>
>><br>
>><br>
>><br>
</blockquote></div>