diff options
Diffstat (limited to 'lib/Target/X86/X86AsmPrinter.cpp')
-rw-r--r-- | lib/Target/X86/X86AsmPrinter.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/Target/X86/X86AsmPrinter.cpp b/lib/Target/X86/X86AsmPrinter.cpp index 5e13a35f83..0a4106c953 100644 --- a/lib/Target/X86/X86AsmPrinter.cpp +++ b/lib/Target/X86/X86AsmPrinter.cpp @@ -204,9 +204,17 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) { // If external or appending, declare as a global symbol O << "\t.globl " << name << "\n"; // FALL THROUGH - case GlobalValue::InternalLinkage: + case GlobalValue::InternalLinkage: { + if (TAI->getCStringSection()) { + const ConstantArray *CVA = dyn_cast<ConstantArray>(C); + if (CVA && CVA->isCString()) { + SwitchToDataSection(TAI->getCStringSection(), I); + break; + } + } SwitchToDataSection(TAI->getDataSection(), I); break; + } default: assert(0 && "Unknown linkage type!"); } |