diff --git a/llvm/lib/Linker/IRMover.cpp b/llvm/lib/Linker/IRMover.cpp index d55c53eef23d..5a67266a9f46 100644 --- a/llvm/lib/Linker/IRMover.cpp +++ b/llvm/lib/Linker/IRMover.cpp @@ -1440,13 +1440,8 @@ Error IRLinker::run() { // Append the module inline asm string. if (!IsPerformingImport && !SrcM->getModuleInlineAsm().empty()) { - std::string SrcModuleInlineAsm = adjustInlineAsm(SrcM->getModuleInlineAsm(), - SrcTriple); - if (DstM.getModuleInlineAsm().empty()) - DstM.setModuleInlineAsm(SrcModuleInlineAsm); - else - DstM.setModuleInlineAsm(DstM.getModuleInlineAsm() + "\n" + - SrcModuleInlineAsm); + DstM.appendModuleInlineAsm(adjustInlineAsm(SrcM->getModuleInlineAsm(), + SrcTriple)); } // Loop over all of the linked values to compute type mappings. diff --git a/llvm/test/Linker/link-arm-and-thumb-module-inline-asm.ll b/llvm/test/Linker/link-arm-and-thumb-module-inline-asm.ll index 13779f37ffa0..5e12a8c88d90 100644 --- a/llvm/test/Linker/link-arm-and-thumb-module-inline-asm.ll +++ b/llvm/test/Linker/link-arm-and-thumb-module-inline-asm.ll @@ -9,12 +9,11 @@ target triple = "armv7-linux-gnueabihf" module asm "add r1, r2, r2" -; CHECK: .text -; CHECK-NEXT: .balign 4 -; CHECK-NEXT: .arm -; CHECK-NEXT: add r1, r2, r2 -; CHECK-NEXT: module asm -; CHECK-NEXT: .text -; CHECK-NEXT: .balign 2 -; CHECK-NEXT: .thumb -; CHECK-NEXT: orn r1, r2, r2 +; CHECK: module asm ".text" +; CHECK-NEXT: module asm ".balign 4" +; CHECK-NEXT: module asm ".arm" +; CHECK-NEXT: module asm "add r1, r2, r2" +; CHECK-NEXT: module asm ".text" +; CHECK-NEXT: module asm ".balign 2" +; CHECK-NEXT: module asm ".thumb" +; CHECK-NEXT: module asm "orn r1, r2, r2"