From: Chris Lattner Date: Sat, 23 Jul 2011 20:04:25 +0000 (+0000) Subject: fix PR10415, tidying up IR representation of module level inline asm X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9f5bff086cad25c15b4deb8a7763786097aadccd;p=clang fix PR10415, tidying up IR representation of module level inline asm to avoid extraneous \n's. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135862 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp index a4fce926ec..d7b6c7ec3d 100644 --- a/lib/CodeGen/CodeGenModule.cpp +++ b/lib/CodeGen/CodeGenModule.cpp @@ -2186,6 +2186,8 @@ void CodeGenModule::EmitTopLevelDecl(Decl *D) { const std::string &S = getModule().getModuleInlineAsm(); if (S.empty()) getModule().setModuleInlineAsm(AsmString); + else if (*--S.end() == '\n') + getModule().setModuleInlineAsm(S + AsmString.str()); else getModule().setModuleInlineAsm(S + '\n' + AsmString.str()); break; diff --git a/test/CodeGen/asm.c b/test/CodeGen/asm.c index 7199f09e1a..a2d56c84f4 100644 --- a/test/CodeGen/asm.c +++ b/test/CodeGen/asm.c @@ -1,4 +1,13 @@ // RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s + +// PR10415 +__asm__ ("foo1"); +__asm__ ("foo2"); +__asm__ ("foo3"); +// CHECK: module asm "foo1" +// CHECK-NEXT: module asm "foo2" +// CHECK-NEXT: module asm "foo3" + void t1(int len) { __asm__ volatile("" : "=&r"(len), "+&r"(len)); }