emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 9f7bfb6: Port struct Lisp_FLoat to oddball platforms


From: Paul Eggert
Subject: master 9f7bfb6: Port struct Lisp_FLoat to oddball platforms
Date: Tue, 26 May 2020 03:47:54 -0400 (EDT)

branch: master
commit 9f7bfb6cb06f1480a0904184cabf187e03628e55
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Port struct Lisp_FLoat to oddball platforms
    
    * src/lisp.h (struct Lisp_Float): Declare via
    GCALIGNED_UNION_MEMBER, not via GCALIGNED_STRUCT, since alloc.c
    creates these in arrays and GCALIGNED_STRUCT does not necessarily
    suffice to align struct Lisp_Float when it’s used in an array.
    This avoids undefined behavior on oddball machines where
    sizeof (struct Lisp_Float) is not a multiple of 8 and the compiler
    does not support __attribute__ ((aligned 8)).
---
 src/lisp.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/lisp.h b/src/lisp.h
index 8bd83a8..f5d581a 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2801,8 +2801,10 @@ struct Lisp_Float
     {
       double data;
       struct Lisp_Float *chain;
+      GCALIGNED_UNION_MEMBER
     } u;
-  } GCALIGNED_STRUCT;
+  };
+verify (GCALIGNED (struct Lisp_Float));
 
 INLINE bool
 (FLOATP) (Lisp_Object x)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]