[commit: ghc] master: Fix ASSIGN_DBL on Win64 (1212145)

Ian Lynagh igloo at earth.li
Sat Mar 24 13:19:58 CET 2012


Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/1212145be348b35ea91f17f62466de7841e0e705

>---------------------------------------------------------------

commit 1212145be348b35ea91f17f62466de7841e0e705
Author: Ian Lynagh <igloo at earth.li>
Date:   Fri Mar 23 23:06:52 2012 +0000

    Fix ASSIGN_DBL on Win64
    
    We were comparing ALIGNMENT_DOUBLE to ALIGNMENT_LONG, but really
    we cared about W_ values, and sizeof(long) /= sizeof(void *) on Win64

>---------------------------------------------------------------

 includes/Stg.h |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/includes/Stg.h b/includes/Stg.h
index 4faed91..76067de 100644
--- a/includes/Stg.h
+++ b/includes/Stg.h
@@ -257,7 +257,7 @@ typedef StgFunPtr       F_;
 INLINE_HEADER void     ASSIGN_FLT (W_ [], StgFloat);
 INLINE_HEADER StgFloat    PK_FLT     (W_ []);
 
-#if ALIGNMENT_FLOAT <= ALIGNMENT_LONG
+#if ALIGNMENT_FLOAT <= ALIGNMENT_VOID_P
 
 INLINE_HEADER void     ASSIGN_FLT(W_ p_dest[], StgFloat src) { *(StgFloat *)p_dest = src; }
 INLINE_HEADER StgFloat PK_FLT    (W_ p_src[])                { return *(StgFloat *)p_src; }
@@ -278,9 +278,9 @@ INLINE_HEADER StgFloat PK_FLT(W_ p_src[])
     return(y.f);
 }
 
-#endif /* ALIGNMENT_FLOAT > ALIGNMENT_LONG */
+#endif /* ALIGNMENT_FLOAT > ALIGNMENT_VOID_P */
 
-#if ALIGNMENT_DOUBLE <= ALIGNMENT_LONG
+#if ALIGNMENT_DOUBLE <= ALIGNMENT_VOID_P
 
 INLINE_HEADER void     ASSIGN_DBL (W_ [], StgDouble);
 INLINE_HEADER StgDouble   PK_DBL     (W_ []);
@@ -288,7 +288,7 @@ INLINE_HEADER StgDouble   PK_DBL     (W_ []);
 INLINE_HEADER void      ASSIGN_DBL(W_ p_dest[], StgDouble src) { *(StgDouble *)p_dest = src; }
 INLINE_HEADER StgDouble PK_DBL    (W_ p_src[])                 { return *(StgDouble *)p_src; }
 
-#else /* ALIGNMENT_DOUBLE > ALIGNMENT_LONG */
+#else /* ALIGNMENT_DOUBLE > ALIGNMENT_VOID_P */
 
 /* Sparc uses two floating point registers to hold a double.  We can
  * write ASSIGN_DBL and PK_DBL by directly accessing the registers





More information about the Cvs-ghc mailing list