Put const weak stuff in appropriate section on Darwin.
authorDale Johannesen <dalej@apple.com>
Fri, 23 May 2008 00:16:59 +0000 (00:16 +0000)
committerDale Johannesen <dalej@apple.com>
Fri, 23 May 2008 00:16:59 +0000 (00:16 +0000)
g++.dg/abi/key2.C

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51458 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86AsmPrinter.cpp

index caccf52b075e1a81eaf4ed3bf3a5613b2b7a1e8c..9f3f76956dd41e357a716ca3a075d5bcfa5a7af2 100644 (file)
@@ -251,7 +251,15 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) {
       if (Subtarget->isTargetDarwin()) {
         O << "\t.globl " << name << "\n"
           << TAI->getWeakDefDirective() << name << "\n";
-        SwitchToDataSection("\t.section __DATA,__datacoal_nt,coalesced", I);
+        if (!I->isConstant())
+          SwitchToDataSection("\t.section __DATA,__datacoal_nt,coalesced", I);
+        else {
+          const ArrayType *AT = dyn_cast<ArrayType>(Type);
+          if (AT && AT->getElementType()==Type::Int8Ty)
+            SwitchToDataSection("\t.section __TEXT,__const_coal,coalesced", I);
+          else
+            SwitchToDataSection("\t.section __DATA,__const_coal,coalesced", I);
+        }
       } else if (Subtarget->isTargetCygMing()) {
         std::string SectionName(".section\t.data$linkonce." +
                                 name +