<div dir="ltr"><br><span class="gmail-mt-tool-email-notification-true"></span><span class="gmail-mt-tool-email-tracking-true"></span>got a minimal example now: <div><div>    extern thread_local int tls;</div><div>    int main() {</div><div>        tls = 42; </div><div>        return 0;</div><div>    }</div><br>llvm-ir:</div><div><div>    ; ModuleID = 'main.cpp'</div><div>    target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"</div><div>    target triple = "x86_64-pc-linux-gnu"</div><div><br></div><div>    @tls = thread_local global i32 0, align 4</div><div><br></div><div>    ; Function Attrs: norecurse uwtable</div><div>    define i32 @main() #0 {</div><div>      %1 = alloca i32, align 4</div><div>      store i32 0, i32* %1, align 4</div><div>      %2 = call i32* @_ZTW3tls()</div><div>      store i32 37, i32* %2, align 4</div><div>      ret i32 0</div><div>    }</div><div><br></div><div>    define weak_odr hidden i32* @_ZTW3tls() {</div><div>      ret i32* @tls</div><div>    }</div><div><br></div><div>    attributes #0 = { norecurse uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }</div><div><br></div><div>    !llvm.ident = !{!0}</div><div><br></div><div>    !0 = !{!"clang version 3.8.1-12 (tags/RELEASE_381/final)"}</div></div><div><br></div><img width="0" height="0" class="mailtrack-img" src="https://mailtrack.io/trace/mail/f58d2b99121e30faf22509a641376837d43639ac.png?u=931501"></div><div class="gmail_extra"><br><div class="gmail_quote">2017-02-07 16:19 GMT+00:00 Gaetano Checinski <span dir="ltr"><<a href="mailto:gaetano.checinski@gmail.com" target="_blank">gaetano.checinski@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span class="">> <span style="font-size:12.8px">I’ve seen the same problem, but didn’t find solution back then.</span><br style="font-size:12.8px"><span style="font-size:12.8px">> I can give a hint that it is related to a thread local storage (notice TLS in the name).</span><br style="font-size:12.8px">><br style="font-size:12.8px"><span style="font-size:12.8px">> The same result can be reproduced by this simple program:</span><br style="font-size:12.8px">><br style="font-size:12.8px"><span style="font-size:12.8px">>    thread_local int x = 0;</span><br style="font-size:12.8px"><span style="font-size:12.8px">>    int main() {</span><br style="font-size:12.8px"><span style="font-size:12.8px">>      return 0;</span><br style="font-size:12.8px"><span style="font-size:12.8px">>    }</span><br style="font-size:12.8px">><br style="font-size:12.8px"><span style="font-size:12.8px">>When compiled into IR it produces similar error:</span><br style="font-size:12.8px">><br style="font-size:12.8px"><span style="font-size:12.8px">>LLVM ERROR: Cannot select: t19: i64 = X86ISD::WrapperRIP TargetGlobalTLSAddress:i64<</span><span style="font-size:12.8px">i32<wbr>* @x> 0 [TF=19]</span><br style="font-size:12.8px"><span style="font-size:12.8px">>  t18: i64 = TargetGlobalTLSAddress<i32* @x> 0 [TF=19]</span><br style="font-size:12.8px"><span style="font-size:12.8px">>In function: _ZTW1x</span><br><span class="m_-2125643818949585300gmail-mt-tool-email-notification-true"></span><span class="m_-2125643818949585300gmail-mt-tool-email-tracking-true"></span><br></span>interestingly this works on my machine.<div><br></div><div>llvm-ir attached<br><br><br></div><img width="0" height="0" class="m_-2125643818949585300mailtrack-img" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2017-02-07 15:31 GMT+00:00 Alex Denisov <span dir="ltr"><<a href="mailto:1101.debian@gmail.com" target="_blank">1101.debian@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I’ve seen the same problem, but didn’t find solution back then.<br>
I can give a hint that it is related to a thread local storage (notice TLS in the name).<br>
<br>
The same result can be reproduced by this simple program:<br>
<br>
    thread_local int x = 0;<br>
    int main() {<br>
      return 0;<br>
    }<br>
<br>
When compiled into IR it produces similar error:<br>
<br>
LLVM ERROR: Cannot select: t19: i64 = X86ISD::WrapperRIP TargetGlobalTLSAddress:i64<i32<wbr>* @x> 0 [TF=19]<br>
  t18: i64 = TargetGlobalTLSAddress<i32* @x> 0 [TF=19]<br>
In function: _ZTW1x<br>
<span><br>
> On 7 Feb 2017, at 16:13, Mehdi Amini via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>> wrote:<br>
><br>
> + LLVM-dev (clang is mostly about the frontend and this is a backend failure), you may have more change to get an answer.<br>
><br>
>> On Feb 6, 2017, at 5:49 AM, Gaetano Checinski via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>> wrote:<br>
>><br>
>> Running the following code with clang++ -S -emit-llvm main.cpp && lli main.ll on Linux(Debian)<br>
>><br>
>> #include <future><br>
>><br>
>><br>
>><br>
>> int main () {<br>
>><br>
>><br>
>> return std::async([]{return 1;}).get();<br>
>> }<br>
>> fails to run on lli due to the following error:<br>
>><br>
>> LLVM ERROR: Cannot select: 0xd012e0:<br>
>><br>
>>      i64<br>
>> = X86ISD::WrapperRIP TargetGlobalTLSAddress:i64<i8*<wbr>* @_ZSt15__once_callable> 0 [TF=10]<br>
>><br>
>><br>
>><br>
>> 0xd020c0: i64 = TargetGlobalTLSAddress<i8** @_ZSt15__once_callable> 0 [TF=10]<br>
>> In function: _ZSt9call_onceIMNSt13__future_<wbr>base13_State_baseV2EFvPSt8func<wbr>tionIFSt10unique_ptrINS0_12_<wbr>Result_baseENS4_8_DeleterEEvEE<wbr>PbEJPS1_S9_SA_EEvRSt9once_<wbr>flagOT_DpOT0_<br>
>> Questions:<br>
>><br>
>> What does it mean?<br>
>><br>
>> Are there any compiler-flags that fix this problem?<br>
>><br>
>> what specific features is libstdc++ using that cause this issue ?<br>
>><br>
>> How does my problem relate to Bug 21431 ?<br>
>><br>
>> The motivation behind this questions is to understand the differences between libc++ and libstdc++ that leads to this specific error message (on Linux) in llvm's orcjit.<br>
>><br>
>><br>
>><br>
>> ps.: i've also asked this question in stackoverflow<br>
>><br>
>><br>
>><br>
>><br>
</span>>>  Sent with Mailtrack<br>
<div class="m_-2125643818949585300HOEnZb"><div class="m_-2125643818949585300h5">>><br>
>> ______________________________<wbr>_________________<br>
>> cfe-dev mailing list<br>
>> <a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
><br>
> ______________________________<wbr>_________________<br>
> cfe-dev mailing list<br>
> <a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
<br>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>