On Fri, Feb 8, 2019 at 1:24 PM Uros Bizjak <ubiz...@gmail.com> wrote:

> Attached patch fixes --enable-frame-pointer handling, and this way
> makes a couple of defines in config/i386/sol2.h obsolete.

It turned out that --enable-frame-pointer does not work for multilibs
at all. So, instead of pretending that -m32 on x86_64 and -m64 on i686
works as advertised, unify 32bit and 64bit handling.

2019-02-10  Uroš Bizjak  <ubiz...@gmail.com>

    PR target/89221
    * config.gcc (i[34567]86-*-*, x86_64-*-*): Move tests for enable_cld
    and enable_frame_pointer ...
    * configure.ac: ... here.  Update help strings for
    --enable-frame-pointer.
    * configure: Regenerate.
    * config/i386/i386.c (ix86_option_override_internal): Remove
    USE_X86_64_FRAME_POINTER define, use USE_IX86_FRAME_POINTER instead.
    * config/i386/sol2.h (USE_IX86_FRAME_POINTER): Remove.
    (USE_X86_64_FRAME_POINTER): Ditto.

Please note that this fix will re-enable frame pointer for all targets
but linux* or darwin[[8912]]. However, since builds for e.g. cygwin
and mingw survived just well without frame pointers in the mean time,
we should probably list these targets as targets without frame
pointers by default. Maintainers should decide.

Which makes the patch gcc-10 material.

Uros.
Index: config/i386/sol2.h
===================================================================
--- config/i386/sol2.h  (revision 268670)
+++ config/i386/sol2.h  (working copy)
@@ -248,9 +248,6 @@
 #define ASAN_REJECT_SPEC \
   DEF_ARCH64_SPEC("%e:-fsanitize=address is not supported in this 
configuration")
 
-#define USE_IX86_FRAME_POINTER 1
-#define USE_X86_64_FRAME_POINTER 1
-
 #undef NO_PROFILE_COUNTERS
 
 #undef MCOUNT_NAME
Index: config.gcc
===================================================================
--- config.gcc  (revision 268670)
+++ config.gcc  (working copy)
@@ -604,12 +604,6 @@
                echo "This target does not support --with-abi."
                exit 1
        fi
-       if test "x$enable_cld" = xyes; then
-               tm_defines="${tm_defines} USE_IX86_CLD=1"
-       fi
-       if test "x$enable_frame_pointer" = xyes; then
-               tm_defines="${tm_defines} USE_IX86_FRAME_POINTER=1"
-       fi
        ;;
 x86_64-*-*)
        case ${with_abi} in
@@ -630,12 +624,6 @@
                echo "Unknown ABI used in --with-abi=$with_abi"
                exit 1
        esac
-       if test "x$enable_cld" = xyes; then
-               tm_defines="${tm_defines} USE_IX86_CLD=1"
-       fi
-       if test "x$enable_frame_pointer" = xyes; then
-               tm_defines="${tm_defines} USE_IX86_FRAME_POINTER=1"
-       fi
        ;;
 arm*-*-*)
        tm_p_file="arm/arm-flags.h ${tm_p_file} arm/aarch-common-protos.h"
Index: configure
===================================================================
--- configure   (revision 268670)
+++ configure   (working copy)
@@ -1688,8 +1688,7 @@
   --enable-leading-mingw64-underscores
                           enable leading underscores on 64 bit mingw targets
   --enable-cld            enable -mcld by default for 32bit x86
-  --enable-frame-pointer  enable -fno-omit-frame-pointer by default for 32bit
-                          x86
+  --enable-frame-pointer  enable -fno-omit-frame-pointer by default for x86
   --disable-win32-registry
                           disable lookup of installation paths in the Registry
                           on Windows hosts
@@ -12199,8 +12198,7 @@
 
 case $target_os in
 linux* | darwin[8912]*)
-  # Enable -fomit-frame-pointer by default for Linux and Darwin with
-  # DWARF2.
+  # Enable -fomit-frame-pointer by default for Linux and Darwin with DWARF2.
   enable_frame_pointer=no
   ;;
 *)
@@ -12211,6 +12209,17 @@
 fi
 
 
+case $target in
+i[34567]86-*-* | x86_64-*-*)
+       if test "x$enable_cld" = xyes; then
+               tm_defines="${tm_defines} USE_IX86_CLD=1"
+       fi
+       if test "x$enable_frame_pointer" = xyes; then
+               tm_defines="${tm_defines} USE_IX86_FRAME_POINTER=1 
USE_X86_64_FRAME_POINTER=1"
+       fi
+       ;;
+esac
+
 # Windows32 Registry support for specifying GCC installation paths.
 # Check whether --enable-win32-registry was given.
 if test "${enable_win32_registry+set}" = set; then :
@@ -18646,7 +18655,7 @@
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 18640 "configure"
+#line 18658 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -18752,7 +18761,7 @@
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 18746 "configure"
+#line 18764 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -25141,7 +25150,7 @@
           no)
             ;;
           *)
-            as_fn_error "'$enableval' is an invalid value for 
--enable-standard-branch-protection.\
+            as_fn_error $? "'$enableval' is an invalid value for 
--enable-standard-branch-protection.\
   Valid choices are 'yes' and 'no'." "$LINENO" 5
             ;;
         esac
Index: configure.ac
===================================================================
--- configure.ac        (revision 268670)
+++ configure.ac        (working copy)
@@ -1881,12 +1881,11 @@
 
 AC_ARG_ENABLE(frame-pointer,
 [AS_HELP_STRING([--enable-frame-pointer],
-               [enable -fno-omit-frame-pointer by default for 32bit x86])], [],
+               [enable -fno-omit-frame-pointer by default for x86])], [],
 [
 case $target_os in
 linux* | darwin[[8912]]*)
-  # Enable -fomit-frame-pointer by default for Linux and Darwin with
-  # DWARF2.
+  # Enable -fomit-frame-pointer by default for Linux and Darwin with DWARF2.
   enable_frame_pointer=no
   ;;
 *)
@@ -1895,6 +1894,17 @@
 esac
 ])
 
+case $target in
+i[[34567]]86-*-* | x86_64-*-*)
+       if test "x$enable_cld" = xyes; then
+               tm_defines="${tm_defines} USE_IX86_CLD=1"
+       fi
+       if test "x$enable_frame_pointer" = xyes; then
+               tm_defines="${tm_defines} USE_IX86_FRAME_POINTER=1 
USE_X86_64_FRAME_POINTER=1"
+       fi
+       ;;
+esac
+
 # Windows32 Registry support for specifying GCC installation paths.
 AC_ARG_ENABLE(win32-registry,
 [AS_HELP_STRING([--disable-win32-registry],

Reply via email to