From: Simon Marlow Date: Wed, 3 May 2006 09:36:14 +0000 (+0000) Subject: only pass -fno-unit-at-a-time to gcc if it is supported X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=862106eb2518f437b9f10dc9367e99454ebd8072 only pass -fno-unit-at-a-time to gcc if it is supported --- diff --git a/aclocal.m4 b/aclocal.m4 index b5622df..ebe182d 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1079,13 +1079,24 @@ AC_SUBST([GhcHasReadline], [`echo $fp_cv_ghc_has_readline | sed 'y/yesno/YESNO/' AC_DEFUN([FP_GCC_NEEDS_NO_OMIT_LFPTR], [AC_REQUIRE([FP_HAVE_GCC]) AC_CACHE_CHECK([whether gcc needs -mno-omit-leaf-frame-pointer], [fp_cv_gcc_needs_no_omit_lfptr], -[FP_COMPARE_VERSIONS([$gcc_version_str], [-ge], [3.2], +[FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [3.2], [fp_cv_gcc_needs_no_omit_lfptr=yes], [fp_cv_gcc_needs_no_omit_lfptr=no])]) if test "$fp_cv_gcc_needs_no_omit_lfptr" = "yes"; then AC_DEFINE([HAVE_GCC_MNO_OMIT_LFPTR], [1], [Define to 1 if gcc supports -mno-omit-leaf-frame-pointer.]) fi])# FP_GCC_NEEDS_NO_OMIT_LFPTR +# FP_GCC_HAS_NO_UNIT_AT_A_TIME +# -------------------------- +AC_DEFUN([FP_GCC_HAS_NO_UNIT_AT_A_TIME], +[AC_REQUIRE([FP_HAVE_GCC]) +AC_CACHE_CHECK([whether gcc has -fno-unit-at-a-time], [fp_cv_gcc_has_no_unit_at_a_time], +[FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [3.4], + [fp_cv_gcc_has_no_unit_at_a_time=yes], + [fp_cv_gcc_has_no_unit_at_a_time=no])]) +if test "$fp_cv_gcc_has_no_unit_at_a_time" = "yes"; then + AC_DEFINE([HAVE_GCC_HAS_NO_UNIT_AT_A_TIME], [1], [Define to 1 if gcc supports -fno-unit-at-a-time.]) +fi]) # FP_SETUP_PROJECT_VERSION # --------------------- diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index aa2a400..0769812 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -1267,11 +1267,13 @@ machdepCCOpts dflags -- and get in the way of -split-objs. Another option -- would be to throw them away in the mangler, but this -- is easier. +#ifdef HAVE_GCC_HAS_NO_UNIT_AT_A_TIME "-fno-unit-at-a-time", -- unit-at-a-time doesn't do us any good, and screws -- up -split-objs by moving the split markers around. -- It's only turned on with -O2, but put it here just -- in case someone uses -optc-O2. +#endif "-fno-builtin" -- calling builtins like strlen() using the FFI can -- cause gcc to run out of regs, so use the external diff --git a/configure.ac b/configure.ac index a35ad81..29ed29f 100644 --- a/configure.ac +++ b/configure.ac @@ -844,6 +844,7 @@ dnl FP_HAVE_GCC FP_MINGW_GCC FP_GCC_NEEDS_NO_OMIT_LFPTR +FP_GCC_HAS_NO_UNIT_AT_A_TIME dnl ** figure out how to invoke cpp directly (gcc -E is no good) AC_PROG_CPP