[LLVMbugs] [Bug 6623] New: clang/llvm expands memcpy thus making the resulting code big
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Mon Mar 15 12:01:17 PDT 2010
http://llvm.org/bugs/show_bug.cgi?id=6623
Summary: clang/llvm expands memcpy thus making the resulting
code big
Product: libraries
Version: trunk
Platform: PC
OS/Version: FreeBSD
Status: NEW
Severity: normal
Priority: P
Component: Backend: X86
AssignedTo: unassignedbugs at nondot.org
ReportedBy: rdivacky at freebsd.org
CC: llvmbugs at cs.uiuc.edu
pes delta$ clang -c -std=c99 -fno-inline -Os boot2.c && nm -S boot2.o | grep "t
fsread"
.... warnings ....
000000000000000e 0000000000000112 t fsread
pes delta$ gcc -c -std=c99 -fno-inline -Os boot2.c && nm -S boot2.o | grep "t
fsread"
.... warnings ....
0000000000000000 00000000000000cd t fsread
clang code is MUCH larger.. this is because gcc uses memcpy
imulq $120, %rax, %rsi
movl $120, %edx
movl $dp2.1791, %edi
addq %rcx, %rsi
call memcpy
while clang unrolls that memcpy:
movq 112, %rax
movq %rax, fsread.dp2+112(%rip)
movq 104, %rax
movq %rax, fsread.dp2+104(%rip)
movq 96, %rax
movq %rax, fsread.dp2+96(%rip)
movq 88, %rax
movq %rax, fsread.dp2+88(%rip)
movq 80, %rax
movq %rax, fsread.dp2+80(%rip)
movq 72, %rax
movq %rax, fsread.dp2+72(%rip)
movq 64, %rax
movq %rax, fsread.dp2+64(%rip)
movq 56, %rax
movq %rax, fsread.dp2+56(%rip)
movq 48, %rax
movq %rax, fsread.dp2+48(%rip)
movq 40, %rax
movq %rax, fsread.dp2+40(%rip)
movq 32, %rax
movq %rax, fsread.dp2+32(%rip)
movq 24, %rax
movq %rax, fsread.dp2+24(%rip)
movq 16, %rax
movq %rax, fsread.dp2+16(%rip)
movq 0, %rax
movq 8, %rcx
movq %rcx, fsread.dp2+8(%rip)
movq %rax, fsread.dp2(%rip)
I need the generated code to be as small as possible and this effectively
prevents me from that. can I turn this optimization off somehow?
note that this happens at -O0 too
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list