summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2004-06-12 14:50:52 +0000
committerXavier Leroy <xavier.leroy@inria.fr>2004-06-12 14:50:52 +0000
commit1882ecd18f72470862689ea653f3934a4ca3e997 (patch)
treee02478e6e3dd04b0f8de7c239b7bdfa35a968c83
parentc8bd730465e966622d2602048fc0696ec22e406e (diff)
ARCH_ALIGN_DOUBLE incorrect sur UltraSparc en mode 64 bits (PR#2572)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@6393 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rwxr-xr-xconfigure21
1 files changed, 17 insertions, 4 deletions
diff --git a/configure b/configure
index 0f6df6806..b69c2e409 100755
--- a/configure
+++ b/configure
@@ -405,8 +405,16 @@ case "$host" in
# On Sparc V9 with certain versions of gcc, determination of double
# alignment is not reliable (PR#1521), hence force it.
# Same goes for hppa.
- echo "Doubles must be doubleword-aligned."
- echo "#define ARCH_ALIGN_DOUBLE" >> m.h;;
+ # But there's a knack (PR#2572):
+ # if we're in 64-bit mode (sizeof(long) == 8),
+ # we must not doubleword-align floats...
+ if test $2 = 8; then
+ echo "Doubles can be word-aligned."
+ echo "#undef ARCH_ALIGN_DOUBLE" >> m.h
+ else
+ echo "Doubles must be doubleword-aligned."
+ echo "#define ARCH_ALIGN_DOUBLE" >> m.h
+ fi;;
*)
sh ./runtest dblalign.c
case $? in
@@ -425,8 +433,13 @@ esac
if $int64_native; then
case "$host" in
hppa*-*-*)
- echo "64-bit integers must be doubleword-aligned."
- echo "#define ARCH_ALIGN_INT64" >> m.h;;
+ if test $2 = 8; then
+ echo "64-bit integers can be word-aligned."
+ echo "#undef ARCH_ALIGN_INT64" >> m.h
+ else
+ echo "64-bit integers must be doubleword-aligned."
+ echo "#define ARCH_ALIGN_INT64" >> m.h
+ fi;;
*)
sh ./runtest int64align.c
case $? in