[Bug target/26553] New: PIC stubs vs regparm
pinskia at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Fri Mar 3 20:41:00 GMT 2006
While looking at PR 26552, I noticed that stubs would override eax, that is
wrong as it is used to pass regparms.
Testcase:
int f(int ) __attribute__((regparm(3)));
int g(void)
{
return f(1);
}
------
We get:
_g:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
movl $1, %eax
call L_f$stub
leave
ret
.picsymbol_stub
L_f$stub:
.indirect_symbol _f
call LPC$1
LPC$1: popl %eax
movl L1$lz-LPC$1(%eax),%edx
jmp *%edx
L_f$stub_binder:
lea L1$lz-LPC$1(%eax),%eax
pushl %eax
jmp dyld_stub_binding_helper
L1$lz:
.indirect_symbol _f
.long L_f$stub_binder
So we get eax clobbered each time calling the stub.
--
Summary: PIC stubs vs regparm
Product: gcc
Version: unknown
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
GCC target triplet: i686-darwin
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26553
More information about the Gcc-bugs
mailing list