--- gforth/configure.in 2005/01/17 16:52:46 1.144 +++ gforth/configure.in 2005/01/24 18:47:50 1.149 @@ -34,17 +34,46 @@ AC_CONFIG_HEADERS(engine/config.h) test "$CFLAGS" || CFLAGS=-O2 AC_ARG_ENABLE(force-reg, -[ --enable-force-reg Use explicit register declarations if they appear in + AC_HELP_STRING([--enable-force-reg], + [ Use explicit register declarations if they appear in the machine.h file. This can cause a good speedup, but also incorrect code with some gcc versions on - some processors (default disabled).], -AC_DEFINE(FORCE_REG,,[Define if you want to use explicit register declarations for better performance or for more convenient CODE words (does not work with all GCC versions on all machines)])) + some processors (default disabled).]), + ,enable_force_reg=no) +test "$enable_force_reg" = "no"|| + AC_DEFINE(FORCE_REG,,[Define if you want to use explicit register declarations for better performance or for more convenient CODE words (does not work with all GCC versions on all machines)]) + +AC_ARG_ENABLE(force-ll, + AC_HELP_STRING([--enable-force-ll], + [ Use explicit long long declarations if they appear in + the machine.h file. This can cause a good speedup, + but also incorrect code with some gcc versions on + some processors (default disabled).]), + ,enable_force_ll=no) +test "$enable_force_ll" = "no"|| + AC_DEFINE(FORCE_LL,,[Define if you want to use explicit long long declarations for better performance (does not work with all GCC versions on all machines)]) + +AC_ARG_ENABLE(gcc-pr15242-workaround, + AC_HELP_STRING([--disable-gcc-pr15242-workaround],[Disables + dynamic code generation on some versions of gcc + (slowdown~2 on Athlon) and causes slower building + of gforth (but gforth speedups) on others. + (default enabled)]), + ,enable_gcc_pr15242_workaround=yes) +test "$enable_gcc_pr15242_workaround" = "no"|| +AC_DEFINE(GCC_PR15242_WORKAROUND,,[Define if you want to get dynamic code +generation on gccs affected by PR15242]) + AC_SUBST(PROFEXES) AC_SUBST(PROFOBJS) AC_ARG_ENABLE(prof, -[ --enable-prof Build gforth-prof, which outputs frequently occuring - sequences of primitives.], -PROFEXES="gforth-prof\$(EXE)"; PROFOBJS="engine-prof.o main-prof.o profile.o") + AC_HELP_STRING([--enable-prof], + [ Build gforth-prof, which outputs frequently occuring + sequences of primitives.]), + ,enable_prof=no) +if test "$enable_prof" = "no"; then + PROFEXES="gforth-prof\$(EXE)"; PROFOBJS="engine-prof.o main-prof.o profile.o" +fi AC_ARG_WITH(debug, [ --with-debug specifies option -g to compile with debug info @@ -161,8 +190,6 @@ case "$host_cpu" in ;; x86_64) machine=amd64 - ac_includes_default="$ac_includes_default -#include \"arch/generic/128bit.h\"" ;; ia64*) machine=ia64 @@ -224,6 +251,11 @@ case "$host_cpu" in esac AC_SUBST(host) +if test "${enable_force_ll+set}" = set; then + ac_includes_default="$ac_includes_default +#include \"arch/generic/128bit.h\"" +fi + dnl the following macro produces a warning with autoconf-2.1 AC_CHECK_SIZEOF(char *) case "$ac_cv_sizeof_char_p" in @@ -468,8 +500,13 @@ else fi #check how to do asm(".skip 16") +echo "CFLAGS=$CFLAGS" +echo "ac_link=$ac_link" AC_MSG_CHECKING([if and how we can waste code space]) if test -z "$skipcode"; then + skipcode=no + CFLAGS_1="$CFLAGS" + CFLAGS="$CFLAGS $ENGINE_FLAGS" for i in ".skip 16" ".block 16" ".org .+16" ".=.+16" ".space 16" do AC_TRY_RUN( @@ -484,7 +521,7 @@ int foo(int x, int y, int z) if (x) { y++; /* workaround for http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12108 */ label1: - asm(".skip 16"); /* or ".space 16" or somesuch */ + asm("$i"); /* or ".space 16" or somesuch */ label2: ; } { @@ -495,6 +532,7 @@ int foo(int x, int y, int z) ,skipcode=$i; break ,,) done + CFLAGS=$CFLAGS_1 fi AC_MSG_RESULT($skipcode) if test "$skipcode" = no