From: H.J. Lu Date: Fri, 12 Jun 2020 12:44:59 +0000 (-0700) Subject: Linux/i386: Remove SUBTARGET_FRAME_POINTER_REQUIRED X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=727efd27da90fe09ed393c7bb44bba071ae0e0d3;p=gcc.git Linux/i386: Remove SUBTARGET_FRAME_POINTER_REQUIRED config/i386/gnu-user.h has #define SUBTARGET_FRAME_POINTER_REQUIRED crtl->profile ix86_frame_pointer_required() has /* Several x86 os'es need a frame pointer for other reasons, usually pertaining to setjmp. */ if (SUBTARGET_FRAME_POINTER_REQUIRED) return true; ... if (crtl->profile && !flag_fentry) return true; A frame pointer is needed only for -pg, not for -mfentry -pg. Remove SUBTARGET_FRAME_POINTER_REQUIRED from gnu-user.h to make i386 GCC behave the same as x86-64 GCC. This fixes FAIL: gcc.target/i386/pr93492-3.c scan-assembler \t.cfi_startproc\n\tendbr(32|64)\n.*.LPFE1:\n\tnop\n1:\tcall\t__fentry__\n\tret\n FAIL: gcc.target/i386/pr93492-5.c scan-assembler \t.cfi_startproc\n.*.LPFE1:\n\tnop\n1:\tcall\t__fentry__\n\tret\n on Linux/i386. PR target/95655 * config/i386/gnu-user.h (SUBTARGET_FRAME_POINTER_REQUIRED): Removed. * config/i386/i386.c (ix86_frame_pointer_required): Update comments. --- diff --git a/gcc/config/i386/gnu-user.h b/gcc/config/i386/gnu-user.h index ae4aa844f02..6ec5a114270 100644 --- a/gcc/config/i386/gnu-user.h +++ b/gcc/config/i386/gnu-user.h @@ -39,12 +39,6 @@ along with GCC; see the file COPYING3. If not see #undef MCOUNT_NAME #define MCOUNT_NAME "mcount" -/* The GLIBC version of mcount for the x86 assumes that there is a - frame, so we cannot allow profiling without a frame pointer. */ - -#undef SUBTARGET_FRAME_POINTER_REQUIRED -#define SUBTARGET_FRAME_POINTER_REQUIRED crtl->profile - #undef SIZE_TYPE #define SIZE_TYPE "unsigned int" diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 37aaa49996d..5c373c091ce 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -5267,6 +5267,8 @@ ix86_frame_pointer_required (void) || ix86_current_function_calls_tls_descriptor)) return true; + /* Several versions of mcount for the x86 assumes that there is a + frame, so we cannot allow profiling without a frame pointer. */ if (crtl->profile && !flag_fentry) return true;