diff options
author | Robert Lytton <robert@xmos.com> | 2013-08-01 07:52:05 +0000 |
---|---|---|
committer | Robert Lytton <robert@xmos.com> | 2013-08-01 07:52:05 +0000 |
commit | b4787a159df6d1b070c5d8d740c5ebe74205ca4e (patch) | |
tree | d9ac4c16e2c11c4598c1e22858a3f7f0ea2aefb9 | |
parent | ad5ccc2d750fce59d41c4b63a489d59443810cfc (diff) | |
download | bcm5719-llvm-b4787a159df6d1b070c5d8d740c5ebe74205ca4e.tar.gz bcm5719-llvm-b4787a159df6d1b070c5d8d740c5ebe74205ca4e.zip |
Xcore target
Fix emitArrayBound() calling OutStreamer.Emit*() multiple times when trying to print a single line
llvm-svn: 187562
-rw-r--r-- | llvm/lib/Target/XCore/XCoreAsmPrinter.cpp | 15 | ||||
-rw-r--r-- | llvm/test/CodeGen/XCore/globals.ll | 4 |
2 files changed, 13 insertions, 6 deletions
diff --git a/llvm/lib/Target/XCore/XCoreAsmPrinter.cpp b/llvm/lib/Target/XCore/XCoreAsmPrinter.cpp index 435062b47d2..35ba2998f86 100644 --- a/llvm/lib/Target/XCore/XCoreAsmPrinter.cpp +++ b/llvm/lib/Target/XCore/XCoreAsmPrinter.cpp @@ -83,12 +83,15 @@ void XCoreAsmPrinter::emitArrayBound(MCSymbol *Sym, const GlobalVariable *GV) { GV->hasWeakLinkage()) || GV->hasLinkOnceLinkage()) && "Unexpected linkage"); if (ArrayType *ATy = dyn_cast<ArrayType>( - cast<PointerType>(GV->getType())->getElementType())) { - OutStreamer.EmitSymbolAttribute(Sym, MCSA_Global); - // FIXME: MCStreamerize. - OutStreamer.EmitRawText(StringRef(".globound")); - OutStreamer.EmitRawText("\t.set\t" + Twine(Sym->getName())); - OutStreamer.EmitRawText(".globound," + Twine(ATy->getNumElements())); + cast<PointerType>(GV->getType())->getElementType())) { + + MCSymbol *SymGlob = OutContext.GetOrCreateSymbol( + Twine(Sym->getName() + StringRef(".globound"))); + OutStreamer.EmitSymbolAttribute(SymGlob, MCSA_Global); + + OutStreamer.EmitRawText("\t.set\t" + Twine(Sym->getName()) + + ".globound," + Twine(ATy->getNumElements())); + if (GV->hasWeakLinkage() || GV->hasLinkOnceLinkage()) { // TODO Use COMDAT groups for LinkOnceLinkage OutStreamer.EmitRawText(MAI->getWeakDefDirective() +Twine(Sym->getName())+ diff --git a/llvm/test/CodeGen/XCore/globals.ll b/llvm/test/CodeGen/XCore/globals.ll index dfa5de645ab..b1405878665 100644 --- a/llvm/test/CodeGen/XCore/globals.ll +++ b/llvm/test/CodeGen/XCore/globals.ll @@ -90,3 +90,7 @@ entry: @G8 = internal global i32 9312 ; CHECK: .section .dp.data,"awd",@progbits ; CHECK: G8: + +@array = global [10 x i16] zeroinitializer, align 2 +; CHECK: .globl array.globound +; CHECK: .set array.globound,10 |