Thread local globals don't require special handling by the linker and so can
authorRichard Osborne <richard@xmos.com>
Wed, 22 Jul 2009 11:01:00 +0000 (11:01 +0000)
committerRichard Osborne <richard@xmos.com>
Wed, 22 Jul 2009 11:01:00 +0000 (11:01 +0000)
be placed in the standard data / bss sections.

llvm-svn: 76735

llvm/lib/Target/XCore/XCoreTargetAsmInfo.cpp

index 07cee8f..842c427 100644 (file)
@@ -29,6 +29,13 @@ XCoreTargetAsmInfo::XCoreTargetAsmInfo(const XCoreTargetMachine &TM)
                                 SectionFlags::Small);
   BSSSection_  = getNamedSection("\t.dp.bss", SectionFlags::Writeable |
                                  SectionFlags::BSS | SectionFlags::Small);
+
+  // TLS globals are lowered in the backend to arrays indexed by the current
+  // thread id. After lowering they require no special handling by the linker
+  // and can be placed in the standard data / bss sections.
+  TLSDataSection = DataSection;
+  TLSBSSSection = BSSSection_;
+
   if (TM.getSubtargetImpl()->isXS1A()) {
     ReadOnlySection = getNamedSection("\t.dp.rodata", SectionFlags::None |
                                       SectionFlags::Writeable |