* configure.ac: Add -freg-struct-return on all platforms that
authorVladimir Serbinenko <phcoder@gmail.com>
Thu, 7 Nov 2013 02:33:20 +0000 (03:33 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Thu, 7 Nov 2013 02:33:20 +0000 (03:33 +0100)
support it.

ChangeLog
conf/Makefile.common
configure.ac

index dc18000..c090177 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-11-07  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * configure.ac: Add -freg-struct-return on all platforms that
+       support it.
+
 2013-11-07  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * acinclude.m4: Use -Werror on parameter tests.
index 9eaff2e..33dbb03 100644 (file)
@@ -7,16 +7,16 @@ unexport LC_ALL
 
 # Platform specific options
 if COND_i386_pc
-  CFLAGS_PLATFORM += -mrtd -mregparm=3 -freg-struct-return
+  CFLAGS_PLATFORM += -mrtd -mregparm=3
 endif
 if COND_i386_qemu
-  CFLAGS_PLATFORM += -mrtd -mregparm=3 -freg-struct-return
+  CFLAGS_PLATFORM += -mrtd -mregparm=3
 endif
 if COND_i386_coreboot
-  CFLAGS_PLATFORM += -mrtd -mregparm=3 -freg-struct-return
+  CFLAGS_PLATFORM += -mrtd -mregparm=3
 endif
 if COND_i386_ieee1275
-  CFLAGS_PLATFORM += -mrtd -mregparm=3 -freg-struct-return
+  CFLAGS_PLATFORM += -mrtd -mregparm=3
 endif
 if COND_mips_loongson
   CFLAGS_PLATFORM += -mexplicit-relocs
index 338e267..96f90e4 100644 (file)
@@ -499,6 +499,17 @@ if test "x$target_cpu" = xi386; then
   fi
 fi
 
+AC_CACHE_CHECK([whether -freg-struct-return works], [grub_cv_cc_freg_struct_return], [
+    CFLAGS="$TARGET_CFLAGS -freg-struct-return -Werror"
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
+        [grub_cv_cc_freg_struct_return=yes],
+       [grub_cv_cc_freg_struct_return=no])
+])
+
+if test "x$grub_cv_cc_freg_struct_return" = xyes; then
+    TARGET_CFLAGS="$TARGET_CFLAGS -freg-struct-return"
+fi
+
 if ( test "x$target_cpu" = xi386 || test "x$target_cpu" = xx86_64 ) && test "x$platform" != xemu; then
   # Some toolchains enable these features by default, but they need
   # registers that aren't set up properly in GRUB.