------- Comment #2 from jdemeyer at cage dot ugent dot be  2008-09-01 18:18 
-------
Created an attachment (id=16183)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16183&action=view)
Better and simpler test case

The second test case, asmtest2.i exhibits the bug on even more versions of gcc.
 To run the testcase, do
gcc -O1 -save-temps asmtest2.i -o asmtest2

Consider the following piece of inline assembly (the second one of asmtest2.i):
asm("# ASM 2\n"
    "movl %5, %2\n"
    "movl %4, %0\n"
    "movl %0, %1\n"
    "movl %3, %0\n"
    : "=&a" (c0), "=&rm" (c1), "=&rm" (c2)
    : "rm" (b0), "rm" (b1), "0" (b2)
    : "cc", "%esi", "%edi", "%edx"
);

gcc 4.3.2 compiles this as
movl %eax, -40(%ebp)
movl -24(%ebp), %eax
movl %eax, -44(%ebp)
movl -40(%ebp), %eax

Note that %2 and %3 are both stored in -40(%ebp).  I think this is a bug.

I have tried this with the following versions of gcc, all of which have the
bug: 3.4.6, 4.0.3, 4.1.2, 4.2.4, 4.3.1, 4.3.2


-- 

jdemeyer at cage dot ugent dot be changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #16123|0                           |1
        is obsolete|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37195

Reply via email to