https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95655

            Bug ID: 95655
           Summary: -mfentry -pg generates extra push/pop
           Product: gcc
           Version: 10.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
                CC: crazylht at gmail dot com
  Target Milestone: ---
            Target: i386

[hjl@gnu-cfl-2 tmp]$ cat y.i
void
f10_endbr (void)
{
}
[hjl@gnu-cfl-2 tmp]$ /usr/gcc-10.1.1-32bit/bin/gcc -O1  -mfentry -pg  -S y.i
-m32 -march=x86-64
[hjl@gnu-cfl-2 tmp]$ cat y.s
        .file   "y.i"
        .text
        .globl  f10_endbr
        .type   f10_endbr, @function
f10_endbr:
.LFB0:
        .cfi_startproc
1:      call    __fentry__
        pushl   %ebp
        .cfi_def_cfa_offset 8
        .cfi_offset 5, -8
        movl    %esp, %ebp
        .cfi_def_cfa_register 5
        popl    %ebp
        .cfi_restore 5
        .cfi_def_cfa 4, 4
        ret
        .cfi_endproc
.LFE0:
        .size   f10_endbr, .-f10_endbr
        .ident  "GCC: (GNU) 10.1.1 20200523"
        .section        .note.GNU-stack,"",@progbits
[hjl@gnu-cfl-2 tmp]$ /usr/gcc-10.1.1-x32/bin/gcc -O1  -mfentry -pg  -S y.i -m32
-march=x86-64
[hjl@gnu-cfl-2 tmp]$ cat y.s
        .file   "y.i"
        .text
        .globl  f10_endbr
        .type   f10_endbr, @function
f10_endbr:
.LFB0:
        .cfi_startproc
1:      call    __fentry__
        ret
        .cfi_endproc
.LFE0:
        .size   f10_endbr, .-f10_endbr
        .ident  "GCC: (GNU) 10.1.1 20200523"
        .section        .note.GNU-stack,"",@progbits
[hjl@gnu-cfl-2 tmp]$ 

The extra

        pushl   %ebp
        movl    %esp, %ebp
        popl    %ebp

are only generated by the 32-bit GCC.  64-bit GCC is OK.

Reply via email to