diff --git a/src/acconfig.h b/src/acconfig.h index f23a3c78d647d63e14c2249dcbd66e8b48a86fa4..dbd5706e879a9c80a18e2b57f29e32b561708524 100644 --- a/src/acconfig.h +++ b/src/acconfig.h @@ -1,5 +1,5 @@ /* - * $Id: acconfig.h,v 1.89 2001/07/01 21:47:34 mast Exp $ + * $Id: acconfig.h,v 1.90 2001/07/08 20:14:59 grubba Exp $ */ #ifndef MACHINE_H #define MACHINE_H @@ -236,10 +236,13 @@ /* Define if your signals are one-shot */ #undef SIGNAL_ONESHOT +/* Define if you have gcc-style computed goto, and want to use them. */ +#undef HAVE_COMPUTED_GOTO + /* You have gcc-type function attributes? */ #undef HAVE_FUNCTION_ATTRIBUTES -/* You have lc-type __declspec? */ +/* You have cl-type __declspec? */ #undef HAVE_DECLSPEC /* Do your compiler grock 'volatile' */ diff --git a/src/configure.in b/src/configure.in index fc216380b700fd3fd590cf3e920a241261b58341..6a56cfe70db8c50d1e22dc335bbebc68503d869f 100644 --- a/src/configure.in +++ b/src/configure.in @@ -1,4 +1,4 @@ -AC_REVISION("$Id: configure.in,v 1.531 2001/07/01 21:47:33 mast Exp $") +AC_REVISION("$Id: configure.in,v 1.532 2001/07/08 20:14:58 grubba Exp $") AC_INIT(interpret.c) AC_CONFIG_HEADER(machine.h) @@ -988,6 +988,7 @@ AC_ARG_WITH(compiler-trace,[ --with-compiler-trace enable tracing of the compi AC_ARG_WITH(security, [ --with-security enable internal pike security system],[AC_DEFINE(PIKE_SECURITY)],[]) AC_ARG_WITH(bignums, [ --without-bignums disable internal conversion to bignums],[],[with_bignums=yes]) AC_ARG_WITH(shared-nodes,[ --without-shared-nodes disable the SHARED_NODES mode of the optimizer],[],[with_shared_nodes=yes]) +AC_ARG_WITH(computed-goto,[ --with-computed-goto Enable use of gcc-style computed goto (EXPERIMENTAL).], [], [with_computed_goto=no]) AC_ARG_WITH(keypair-loop,[ --with-keypair-loop Enable use of the keypair mapping loop method (EXPERIMENTAL).],[ if test "$with_keypair_loop" = "yes"; then @@ -4351,6 +4352,28 @@ else :; fi ############################################################################# +if test "x$with_computed_goto" = "xyes"; then + AC_MSG_CHECKING(for gcc-style computed goto) + AC_CACHE_VAL(pike_cv_gcc_computed_goto, [ + AC_TRY_COMPILE([], [ + void *skip = &&label; + + goto *skip; + + return 1; + + label: + return 0; + ], [ pike_cv_gcc_computed_goto=yes ], [ pike_cv_gcc_computed_goto=no ]) + ]) + if test "x$pike_cv_gcc_computed_goto" = "xyes"; then + AC_MSG_WARN([Enabling computed goto (EXPERIMENTAL).]) + AC_DEFINE(HAVE_COMPUTED_GOTO) + else :; fi +else :; fi + +############################################################################# + AC_MSG_CHECKING(for gcc function attributes) AC_CACHE_VAL(pike_cv_gcc_attributes, [