[llvm-branch-commits] [llvm-branch] r196036 - --- Reverse-merging r195823 into '.':

Bill Wendling isanbard at gmail.com
Sat Nov 30 20:40:33 PST 2013


Author: void
Date: Sat Nov 30 22:40:32 2013
New Revision: 196036

URL: http://llvm.org/viewvc/llvm-project?rev=196036&view=rev
Log:
--- Reverse-merging r195823 into '.':
U    lib/MC/MCSectionCOFF.cpp
U    lib/CodeGen/TargetLoweringObjectFileImpl.cpp
U    test/MC/COFF/weak-symbol.ll
U    test/MC/COFF/tricky-names.ll
 G   .
--- Recording mergeinfo for reverse merge of r195823 into '.':
 G   .


Modified:
    llvm/branches/release_34/   (props changed)
    llvm/branches/release_34/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
    llvm/branches/release_34/lib/MC/MCSectionCOFF.cpp
    llvm/branches/release_34/test/MC/COFF/tricky-names.ll
    llvm/branches/release_34/test/MC/COFF/weak-symbol.ll

Propchange: llvm/branches/release_34/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Nov 30 22:40:32 2013
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,195092-195094,195100,195102-195103,195118,195129,195136,195138,195148,195152,195156-195157,195161-195162,195193,195272,195317-195318,195327,195330,195333,195339,195343,195355,195364,195379,195397-195399,195408,195421,195423-195424,195432,195439,195444,195455-195456,195469,195476-195477,195479,195491-195493,195514,195528,195547,195567,195573-195576,195590-195591,195599,195632,195635-195636,195670,195677,195679,195682,195684,195713,195716,195769,195773,195779,195782,195787-195788,195791,195798,195803,195812,195827,195834,195843-195844,195878-195881,195887,195903,195905,195915,195932,195936-195943,196004
+/llvm/trunk:155241,195092-195094,195100,195102-195103,195118,195129,195136,195138,195148,195152,195156-195157,195161-195162,195193,195272,195317-195318,195327,195330,195333,195339,195343,195355,195364,195379,195397-195399,195408,195421,195423-195424,195432,195439,195444,195455-195456,195469,195476-195477,195479,195491-195493,195514,195528,195547,195567,195573-195576,195590-195591,195599,195632,195635-195636,195670,195677,195679,195682,195684,195713,195716,195769,195773,195779,195782,195787-195788,195791,195803,195812,195827,195834,195843-195844,195878-195881,195887,195903,195905,195915,195932,195936-195943,196004

Modified: llvm/branches/release_34/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_34/lib/CodeGen/TargetLoweringObjectFileImpl.cpp?rev=196036&r1=196035&r2=196036&view=diff
==============================================================================
--- llvm/branches/release_34/lib/CodeGen/TargetLoweringObjectFileImpl.cpp (original)
+++ llvm/branches/release_34/lib/CodeGen/TargetLoweringObjectFileImpl.cpp Sat Nov 30 22:40:32 2013
@@ -723,31 +723,33 @@ getExplicitSectionGlobal(const GlobalVal
                          Mangler *Mang, const TargetMachine &TM) const {
   int Selection = 0;
   unsigned Characteristics = getCOFFSectionFlags(Kind);
-  StringRef Name = GV->getSection();
-  StringRef COMDATSymName = "";
+  SmallString<128> Name(GV->getSection().c_str());
   if (GV->isWeakForLinker()) {
     Selection = COFF::IMAGE_COMDAT_SELECT_ANY;
     Characteristics |= COFF::IMAGE_SCN_LNK_COMDAT;
-    MCSymbol *Sym = getSymbol(*Mang, GV);
-    COMDATSymName = Sym->getName();
+    Name.append("$");
+    Mang->getNameWithPrefix(Name, GV, false, false);
   }
   return getContext().getCOFFSection(Name,
                                      Characteristics,
                                      Kind,
-                                     COMDATSymName,
+                                     "",
                                      Selection);
 }
 
-static const char *getCOFFSectionNameForUniqueGlobal(SectionKind Kind) {
+static const char *getCOFFSectionPrefixForUniqueGlobal(SectionKind Kind) {
   if (Kind.isText())
-    return ".text";
+    return ".text$";
   if (Kind.isBSS ())
-    return ".bss";
-  if (Kind.isThreadLocal())
-    return ".tls";
+    return ".bss$";
+  if (Kind.isThreadLocal()) {
+    // 'LLVM' is just an arbitary string to ensure that the section name gets
+    // sorted in between '.tls$AAA' and '.tls$ZZZ' by the linker.
+    return ".tls$LLVM";
+  }
   if (Kind.isWriteable())
-    return ".data";
-  return ".rdata";
+    return ".data$";
+  return ".rdata$";
 }
 
 
@@ -758,14 +760,16 @@ SelectSectionForGlobal(const GlobalValue
   // If this global is linkonce/weak and the target handles this by emitting it
   // into a 'uniqued' section name, create and return the section now.
   if (GV->isWeakForLinker()) {
-    const char *Name = getCOFFSectionNameForUniqueGlobal(Kind);
+    const char *Prefix = getCOFFSectionPrefixForUniqueGlobal(Kind);
+    SmallString<128> Name(Prefix, Prefix+strlen(Prefix));
+    Mang->getNameWithPrefix(Name, GV, false, false);
+
     unsigned Characteristics = getCOFFSectionFlags(Kind);
 
     Characteristics |= COFF::IMAGE_SCN_LNK_COMDAT;
-    MCSymbol *Sym = getSymbol(*Mang, GV);
-    return getContext().getCOFFSection(Name, Characteristics,
-                                       Kind, Sym->getName(),
-                                       COFF::IMAGE_COMDAT_SELECT_ANY);
+
+    return getContext().getCOFFSection(Name.str(), Characteristics,
+                                       Kind, "", COFF::IMAGE_COMDAT_SELECT_ANY);
   }
 
   if (Kind.isText())

Modified: llvm/branches/release_34/lib/MC/MCSectionCOFF.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_34/lib/MC/MCSectionCOFF.cpp?rev=196036&r1=196035&r2=196036&view=diff
==============================================================================
--- llvm/branches/release_34/lib/MC/MCSectionCOFF.cpp (original)
+++ llvm/branches/release_34/lib/MC/MCSectionCOFF.cpp Sat Nov 30 22:40:32 2013
@@ -20,8 +20,6 @@ MCSectionCOFF::~MCSectionCOFF() {} // an
 // should be printed before the section name
 bool MCSectionCOFF::ShouldOmitSectionDirective(StringRef Name,
                                                const MCAsmInfo &MAI) const {
-  if (COMDATSymbol)
-    return false;
 
   // FIXME: Does .section .bss/.data/.text work everywhere??
   if (Name == ".text" || Name == ".data" || Name == ".bss")
@@ -60,41 +58,36 @@ void MCSectionCOFF::PrintSwitchToSection
     OS << 'r';
   if (getCharacteristics() & COFF::IMAGE_SCN_MEM_DISCARDABLE)
     OS << 'n';
-
-  OS << '"';
+  OS << "\"\n";
 
   if (getCharacteristics() & COFF::IMAGE_SCN_LNK_COMDAT) {
-    OS << ",";
     switch (Selection) {
       case COFF::IMAGE_COMDAT_SELECT_NODUPLICATES:
-        OS << "one_only,";
+        OS << "\t.linkonce one_only\n";
         break;
       case COFF::IMAGE_COMDAT_SELECT_ANY:
-        OS << "discard,";
+        OS << "\t.linkonce discard\n";
         break;
       case COFF::IMAGE_COMDAT_SELECT_SAME_SIZE:
-        OS << "same_size,";
+        OS << "\t.linkonce same_size\n";
         break;
       case COFF::IMAGE_COMDAT_SELECT_EXACT_MATCH:
-        OS << "same_contents,";
+        OS << "\t.linkonce same_contents\n";
         break;
       case COFF::IMAGE_COMDAT_SELECT_ASSOCIATIVE:
-        OS << "associative " << Assoc->getSectionName() << ",";
+        OS << "\t.linkonce associative " << Assoc->getSectionName() << "\n";
         break;
       case COFF::IMAGE_COMDAT_SELECT_LARGEST:
-        OS << "largest,";
+        OS << "\t.linkonce largest\n";
         break;
       case COFF::IMAGE_COMDAT_SELECT_NEWEST:
-        OS << "newest,";
+        OS << "\t.linkonce newest\n";
         break;
       default:
         assert (0 && "unsupported COFF selection type");
         break;
     }
-    assert(COMDATSymbol);
-    OS << *COMDATSymbol;
   }
-  OS << '\n';
 }
 
 bool MCSectionCOFF::UseCodeAlign() const {

Modified: llvm/branches/release_34/test/MC/COFF/tricky-names.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_34/test/MC/COFF/tricky-names.ll?rev=196036&r1=196035&r2=196036&view=diff
==============================================================================
--- llvm/branches/release_34/test/MC/COFF/tricky-names.ll (original)
+++ llvm/branches/release_34/test/MC/COFF/tricky-names.ll Sat Nov 30 22:40:32 2013
@@ -25,11 +25,11 @@ define weak i32 @"\01??_B?$num_put at _WV?$
 ; ASM-NOT: .globl "@foo.bar"
 
 ; READOBJ: Symbol
-; READOBJ: Name: .text
-; READOBJ: Section: .text
+; READOBJ: Name: .text$??_B?$num_put at _WV?$back_insert_iterator at V?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@@std@@@std@@51
+; READOBJ: Section: .text$??_B?$num_put at _WV?$back_insert_iterator at V?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@@std@@@std@@51
 ; READOBJ: Symbol
 ; READOBJ: Name: ??_B?$num_put at _WV?$back_insert_iterator at V?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@@std@@@std@@51
-; READOBJ: Section: .text
+; READOBJ: Section: .text$??_B?$num_put at _WV?$back_insert_iterator at V?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@@std@@@std@@51
 ; READOBJ: Symbol
 ; READOBJ: Name: ??__E_Generic_object@?$_Error_objects at H@std@@YAXXZ
 ; READOBJ: Symbol

Modified: llvm/branches/release_34/test/MC/COFF/weak-symbol.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_34/test/MC/COFF/weak-symbol.ll?rev=196036&r1=196035&r2=196036&view=diff
==============================================================================
--- llvm/branches/release_34/test/MC/COFF/weak-symbol.ll (original)
+++ llvm/branches/release_34/test/MC/COFF/weak-symbol.ll Sat Nov 30 22:40:32 2013
@@ -8,31 +8,37 @@
 ; RUN: llc -mtriple=x86_64-pc-mingw32 %s -o - | FileCheck %s --check-prefix=X64
 
 ; Mangled function
-; X86: .section .text,"xr",discard,__Z3foo
+; X86: .section .text$_Z3foo
+; X86: .linkonce discard
 ; X86: .globl __Z3foo
 ;
-; X64: .section .text,"xr",discard,_Z3foo
+; X64: .section .text$_Z3foo
+; X64: .linkonce discard
 ; X64: .globl _Z3foo
 define weak void @_Z3foo() {
   ret void
 }
 
 ; Unmangled function
-; X86: .section .sect,"xr",discard,_f
+; X86: .section .sect$f
+; X86: .linkonce discard
 ; X86: .globl _f
 ;
-; X64: .section .sect,"xr",discard,f
+; X64: .section .sect$f
+; X64: .linkonce discard
 ; X64: .globl f
 define weak void @f() section ".sect" {
   ret void
 }
 
 ; Weak global
-; X86: .section .data,"r",discard,_a
+; X86: .section .data$a
+; X86: .linkonce discard
 ; X86: .globl _a
 ; X86: .zero 12
 ;
-; X64: .section .data,"r",discard,a
+; X64: .section .data$a
+; X64: .linkonce discard
 ; X64: .globl a
 ; X64: .zero 12
 @a = weak unnamed_addr constant { i32, i32, i32 } { i32 0, i32 0, i32 0}, section ".data"





More information about the llvm-branch-commits mailing list