* configure.ac: Add -freg-struct-return on all platforms that

support it.
This commit is contained in:
Vladimir Serbinenko 2013-11-07 03:33:20 +01:00
parent b35ec29927
commit cdc17f60dc
3 changed files with 20 additions and 4 deletions

View file

@ -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> 2013-11-07 Vladimir Serbinenko <phcoder@gmail.com>
* acinclude.m4: Use -Werror on parameter tests. * acinclude.m4: Use -Werror on parameter tests.

View file

@ -7,16 +7,16 @@ unexport LC_ALL
# Platform specific options # Platform specific options
if COND_i386_pc if COND_i386_pc
CFLAGS_PLATFORM += -mrtd -mregparm=3 -freg-struct-return CFLAGS_PLATFORM += -mrtd -mregparm=3
endif endif
if COND_i386_qemu if COND_i386_qemu
CFLAGS_PLATFORM += -mrtd -mregparm=3 -freg-struct-return CFLAGS_PLATFORM += -mrtd -mregparm=3
endif endif
if COND_i386_coreboot if COND_i386_coreboot
CFLAGS_PLATFORM += -mrtd -mregparm=3 -freg-struct-return CFLAGS_PLATFORM += -mrtd -mregparm=3
endif endif
if COND_i386_ieee1275 if COND_i386_ieee1275
CFLAGS_PLATFORM += -mrtd -mregparm=3 -freg-struct-return CFLAGS_PLATFORM += -mrtd -mregparm=3
endif endif
if COND_mips_loongson if COND_mips_loongson
CFLAGS_PLATFORM += -mexplicit-relocs CFLAGS_PLATFORM += -mexplicit-relocs

View file

@ -499,6 +499,17 @@ if test "x$target_cpu" = xi386; then
fi fi
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 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 # Some toolchains enable these features by default, but they need
# registers that aren't set up properly in GRUB. # registers that aren't set up properly in GRUB.