From: reid Date: Tue, 3 Mar 1998 19:04:50 +0000 (+0000) Subject: [project @ 1998-03-03 19:04:47 by reid] X-Git-Tag: Approx_2487_patches~891 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=08c5cc05abd626370d12ccee16db0978caeb9e60;p=ghc-hetmet.git [project @ 1998-03-03 19:04:47 by reid] Added alignment tests --- diff --git a/acconfig.h b/acconfig.h index 5c8dbcb..d77c289 100644 --- a/acconfig.h +++ b/acconfig.h @@ -59,6 +59,15 @@ /* Define to unsigned long long int if doesn't define */ #undef ullong +/* Define to alignment constraint on doubles or on unsigned int - whichever is the greater */ +#undef ALIGNMENT_DOUBLE + +/* Define to alignment constraint on floats or on unsigned int - whichever is the greater */ +#undef ALIGNMENT_FLOAT + +/* Define to alignment constraint on unsigned int - whichever is the greater */ +#undef ALIGNMENT_UNSIGNED_INT + /* Leave that blank line there!! Autoheader needs it. If you're adding to this file, keep in mind: diff --git a/aclocal.m4 b/aclocal.m4 index 0535dc1..d1f9a64 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -# $Id: aclocal.m4,v 1.19 1998/03/03 04:45:07 reid Exp $ +# $Id: aclocal.m4,v 1.20 1998/03/03 19:04:48 reid Exp $ # # Extra autoconf macros for the Glasgow fptools # @@ -340,3 +340,45 @@ else fi rm -fr conftest* ]) + +dnl ** figure out whether types can be word-aligned +dnl (test based on test in smalltalk-1.1.5 configuration) +dnl (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE +dnl so we can't call REQUIRE) + +dnl GHC_CHECK_ALIGNMENT(TYPE) +AC_DEFUN(GHC_CHECK_ALIGNMENT, +[changequote(<<, >>)dnl +dnl The name to #define. +define(<>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl +dnl The cache variable name. +define(<>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl +dnl The name of the corresponding size. +define(<>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl +changequote([, ])dnl +AC_MSG_CHECKING(alignment of $1) +AC_CACHE_VAL(AC_CV_NAME, +[AC_TRY_RUN([ +main() +{ + unsigned int vec[3]; + $1 test, *testptr; + + test = *($1 *)&vec[1]; + testptr = ($1 *)&vec[1]; + *testptr = test; + + exit(0); +} +], +AC_CV_NAME=$ac_cv_sizeof_unsigned_int, +AC_CV_NAME=$AC_CV_SIZEOF_NAME, +AC_CV_NAME=$AC_CV_SIZEOF_NAME)]) +AC_MSG_RESULT($AC_CV_NAME) +AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME) +AC_PROVIDE($AC_TYPE_NAME) +undefine([AC_TYPE_NAME])dnl +undefine([AC_CV_NAME])dnl +undefine([AC_CV_SIZEOF_NAME])dnl +]) + diff --git a/configure.in b/configure.in index 7487fc9..f14eab2 100644 --- a/configure.in +++ b/configure.in @@ -443,13 +443,24 @@ dnl ** how do we get a timezone name, and UTC offset ? AC_STRUCT_TIMEZONE # -dnl what's the type of timezone? +dnl ** what's the type of timezone? AC_TYPE_TIMEZONE # -dnl do we have altzone? +dnl ** do we have altzone? AC_ALTZONE +dnl ** what are the sizes of various types +dnl (these must come before GHC_CHECK_ALIGNMENT) +AC_CHECK_SIZEOF(unsigned int,4) +AC_CHECK_SIZEOF(float,4) +AC_CHECK_SIZEOF(double,8) + +dnl ** what are alignment constraints on various types +GHC_CHECK_ALIGNMENT(unsigned int) dnl redundant but harmless +GHC_CHECK_ALIGNMENT(float) +GHC_CHECK_ALIGNMENT(double) + # dnl ** check for specific library functions that we are interested in #