[llvm-dev] [cfe-dev] lli: LLVM ERROR: Cannot select: X86ISD::WrapperRIP TargetGlobalTLSAddress:i64

Alex Denisov via llvm-dev llvm-dev at lists.llvm.org
Tue Feb 7 07:31:30 PST 2017


I’ve seen the same problem, but didn’t find solution back then.
I can give a hint that it is related to a thread local storage (notice TLS in the name).

The same result can be reproduced by this simple program:

    thread_local int x = 0;
    int main() {
      return 0;
    }

When compiled into IR it produces similar error:

LLVM ERROR: Cannot select: t19: i64 = X86ISD::WrapperRIP TargetGlobalTLSAddress:i64<i32* @x> 0 [TF=19]
  t18: i64 = TargetGlobalTLSAddress<i32* @x> 0 [TF=19]
In function: _ZTW1x

> On 7 Feb 2017, at 16:13, Mehdi Amini via cfe-dev <cfe-dev at lists.llvm.org> wrote:
> 
> + LLVM-dev (clang is mostly about the frontend and this is a backend failure), you may have more change to get an answer.
> 
>> On Feb 6, 2017, at 5:49 AM, Gaetano Checinski via cfe-dev <cfe-dev at lists.llvm.org> wrote:
>> 
>> Running the following code with clang++ -S -emit-llvm main.cpp && lli main.ll on Linux(Debian)
>> 
>> #include <future>
>> 
>> 
>> 
>> int main () {
>> 
>>   
>> return std::async([]{return 1;}).get();
>> }
>> fails to run on lli due to the following error:
>> 
>> LLVM ERROR: Cannot select: 0xd012e0:
>>  
>>      i64 
>> = X86ISD::WrapperRIP TargetGlobalTLSAddress:i64<i8** @_ZSt15__once_callable> 0 [TF=10]
>> 
>> 
>>  
>> 0xd020c0: i64 = TargetGlobalTLSAddress<i8** @_ZSt15__once_callable> 0 [TF=10]
>> In function: _ZSt9call_onceIMNSt13__future_base13_State_baseV2EFvPSt8functionIFSt10unique_ptrINS0_12_Result_baseENS4_8_DeleterEEvEEPbEJPS1_S9_SA_EEvRSt9once_flagOT_DpOT0_
>> Questions:
>> 
>> What does it mean?
>> 
>> Are there any compiler-flags that fix this problem?
>> 
>> what specific features is libstdc++ using that cause this issue ?
>> 
>> How does my problem relate to Bug 21431 ?
>> 
>> 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.
>> 
>> 
>> 
>> ps.: i've also asked this question in stackoverflow
>> 
>> 
>> 
>> 
>>  Sent with Mailtrack
>> 
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
> 
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev



More information about the llvm-dev mailing list