https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116869
Bug ID: 116869
Summary: Profiler count register conflicts with regparm
Product: gcc
Version: 14.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: jwjagersma at gmail dot com
Target Milestone: ---
On i386 targets that pass a profiler count address in EDX, the second
argument to a regparm function is clobbered:
$ cat test.c
__attribute((regparm(2)))
int add (int a, int b)
{
return a + b;
}
$ i386-pc-msdosdjgpp-gcc -S test.c -O -pg -o -
.file "test.c"
.section .text
.globl _add
_add:
pushl %ebp
movl %esp, %ebp
.section .data
.p2align 2
LP0:
.long 0
.section .text
movl $LP0, %edx
1: call _mcount
addl %edx, %eax
popl %ebp
ret
.ident "GCC: (GNU) 14.2.0"