[llvm-commits] [llvm-gcc-4.2] r66537 - /llvm-gcc-4.2/branches/Apple/Dib/gcc/llvm-convert.cpp

Bill Wendling isanbard at gmail.com
Mon Mar 9 23:58:46 PDT 2009


Author: void
Date: Tue Mar 10 01:58:45 2009
New Revision: 66537

URL: http://llvm.org/viewvc/llvm-project?rev=66537&view=rev
Log:
Merge r66529 into Dib:

Instead of manually expanding %=, turn it into ${:uid}.  This 
allows us to properly handle the case when an optimizer duplicates
the asm, such as here:

void bar() {
  int i;
  for (i = 0; i < 3; ++i)
    asm("foo %=" : : "r"(0));
}

we now produce:

_bar:
        xorl    %eax, %eax
        ## InlineAsm Start
        foo 0
        ## InlineAsm End
        ## InlineAsm Start
        foo 1
        ## InlineAsm End
        ## InlineAsm Start
        foo 2
        ## InlineAsm End
        ret

instead of:

_bar:
        xorl    %eax, %eax
        ## InlineAsm Start
        foo 1
        ## InlineAsm End
        ## InlineAsm Start
        foo 1
        ## InlineAsm End
        ## InlineAsm Start
        foo 1
        ## InlineAsm End
        ret

Modified:
    llvm-gcc-4.2/branches/Apple/Dib/gcc/llvm-convert.cpp

Modified: llvm-gcc-4.2/branches/Apple/Dib/gcc/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/branches/Apple/Dib/gcc/llvm-convert.cpp?rev=66537&r1=66536&r2=66537&view=diff

==============================================================================
--- llvm-gcc-4.2/branches/Apple/Dib/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/branches/Apple/Dib/gcc/llvm-convert.cpp Tue Mar 10 01:58:45 2009
@@ -3892,8 +3892,6 @@
 /// Other %xN expressions are turned into LLVM ${N:x} operands.
 ///
 static std::string ConvertInlineAsmStr(tree exp, unsigned NumOperands) {
-  static unsigned InlineAsmCounter = 0U;
-  unsigned InlineAsmNum = InlineAsmCounter++;
 
   tree str = ASM_STRING(exp);
   if (TREE_CODE(str) == ADDR_EXPR) str = TREE_OPERAND(str, 0);
@@ -3934,7 +3932,7 @@
       if (EscapedChar == '%') {            // Escaped '%' character
         Result += '%';
       } else if (EscapedChar == '=') {     // Unique ID for the asm instance.
-        Result += utostr(InlineAsmNum);
+        Result += "${:uid}";
       }
 #ifdef LLVM_ASM_EXTENSIONS
       LLVM_ASM_EXTENSIONS(EscapedChar, InStr, Result)





More information about the llvm-commits mailing list