[llvm-commits] [llvm] r76665 - /llvm/trunk/lib/Target/XCore/XCoreTargetAsmInfo.cpp

Richard Osborne richard at xmos.com
Wed Jul 22 04:08:14 PDT 2009


Richard Osborne wrote:
> Chris Lattner wrote:
>   
>> Author: lattner
>> Date: Tue Jul 21 17:37:38 2009
>> New Revision: 76665
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=76665&view=rev
>> Log:
>> if Xcore doesn't support TLS, it doesn't have to worry about thread local LLVM IR, it should be rejected by a front-end.
>>
>> Modified:
>>     llvm/trunk/lib/Target/XCore/XCoreTargetAsmInfo.cpp
>>
>> Modified: llvm/trunk/lib/Target/XCore/XCoreTargetAsmInfo.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/XCore/XCoreTargetAsmInfo.cpp?rev=76665&r1=76664&r2=76665&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/XCore/XCoreTargetAsmInfo.cpp (original)
>> +++ llvm/trunk/lib/Target/XCore/XCoreTargetAsmInfo.cpp Tue Jul 21 17:37:38 2009
>> @@ -72,7 +72,7 @@
>>  SectionFlagsForGlobal(const GlobalValue *GV, const char* Name) const {
>>    unsigned Flags = ELFTargetAsmInfo::SectionFlagsForGlobal(GV, Name);
>>    // Mask out unsupported flags
>> -  Flags &= ~(SectionFlags::Small | SectionFlags::TLS);
>> +  Flags &= ~SectionFlags::Small;
>>  
>>    // Set CP / DP relative flags
>>    if (GV) {  
>>     
> On the XCore there is no OS and at most 8 hardware threads. Thread local 
> storage is dealt with entirely by lowering in the backend.
>
> __thread int x = 1;
> void f() { x = 2; }
>
> is transformed to:
>
> int x[8] = {1, 1, 1, 1, 1, 1, 1, 1}
> void f() { x[__builtin_getid()] = 2; }
>
> The getid instruction returns the current thread id in the range 0-7. 
> This lowering is done in LowerGlobalTLSAddress in XCoreTargetLowering 
> and emitGlobal in XCoreAsmPrinter.
>
> Because TLS is dealt with entirely in the backend the section for TLS 
> globals should be identical to those for non TLS globals which is why it 
> was being masked off here. However this could equally be done by setting 
> TLSDataSection and TLSBSSSection to be identical to data and bss sections.
>   
I've changed the TLS sections to be identical to the non TLS sections in 
r76735:

http://llvm.org/viewvc/llvm-project?rev=76735&view=rev



More information about the llvm-commits mailing list