[LLVMbugs] [Bug 233] [llvmgcc] Structure copies result in a LOT of code

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Thu Feb 12 13:15:38 PST 2004


sabre at nondot.org changed:

           What    |Removed                     |Added
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED

------- Additional Comments From sabre at nondot.org  2004-02-12 15:15 -------
Fixed.  Patch here:

Here's the testcase:

For this test:
struct X { int V[10000]; };
struct X Global1, Global2;
void test() {
  memcpy(&Global1, &Global2, sizeof(Global2));
  Global2 = Global1;

We now generate the following X86 code, which is substantially better than GCC:

$ llvmgcc test2.c -c -o - | llc -regalloc=linearscan
        .align 16
        .globl test
        .type  test, @function
.LBB0:  # entry
        sub %ESP, 12
        mov DWORD PTR [%ESP + 8], %ESI
        mov DWORD PTR [%ESP + 4], %EDI
        mov %ECX, 40000
        mov %EDI, OFFSET Global1
        mov %ESI, OFFSET Global2
        rep movsb 
        mov %ECX, 10000
        mov %EDI, OFFSET Global2
        mov %ESI, OFFSET Global1
        rep movsd 
        # FP_REG_KILL
        mov %EDI, DWORD PTR [%ESP + 4]
        mov %ESI, DWORD PTR [%ESP + 8]
        add %ESP, 12

        .comm Global1,40000,4           # %struct.X* %Global1
        .comm Global2,40000,4           # %struct.X* %Global2


------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.

More information about the llvm-bugs mailing list