From 0303fab396a818d796c7513457aa341ab703e8f3 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 10 Jun 2018 10:13:45 -0700 Subject: Use native alignment to access Lisp object data Instead of using __builtin_assume_aligned (P, GCALIGNMENT) to tell GCC that P has alignment 8, use (T *) P where T is the type of the pointed-to object, to tell GCC that P has native alignment. This is simpler, matches the intent better, and should help simplify future improvements. Some of these changes are to pacify gcc -Wnull-dereference, since GCC is smarter about pointers now that Emacs no longer uses __builtin_assume_aligned; these minor changes should improve code efficiency slightly. On Fedora 28 x86-64 with default optimization this patch shrinks the size of the Emacs text segment by 0.36%. * src/conf_post.h (__has_builtin, __builtin_assume_aligned): Remove; no longer used. * src/dbusbind.c (XD_OBJECT_TO_DBUS_TYPE): Pacify -Wnull-dereference by using XCAR instead of CAR_SAFE and XCDR instead of CDR_SAFE when this is safe. * src/fileio.c (Fexpand_file_name): * src/font.c (clear_font_cache): Pacify -Wnull-dereference by removing unnecessary NILP test. * src/keyboard.c (xevent_start): New function. (read_char, read_key_sequence): Pacify -Wnull-dereference by using xevent_start instead of EVENT_START. * src/lisp.h (lisp_h_XUNTAG): Remove; XUNTAG is always a macro now, since it can no longer be implemented as a function. (XUNTAG): New third argument CTYPE. All uses changed. Cast result to CTYPE * instead of using __builtin_assume_aligned. Simplify by using LISP_WORD_TAG. (LISP_WORD_TAG): New macro. (TAG_PTR): Use it. * src/menu.c (x_popup_menu_1): Pacify -Wnull-dereference by using XCAR instead of Fcar and XCDR instead of Fcdr where this is safe. --- src/w32fns.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/w32fns.c') diff --git a/src/w32fns.c b/src/w32fns.c index 5d1c3c84c67..2cb715a356d 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -8542,7 +8542,7 @@ DEFUN ("w32-unregister-hot-key", Fw32_unregister_hot_key, eassert (CONSP (item)); /* Pass the tail of the list as a pointer to a Lisp_Cons cell, so that it works in a --with-wide-int build as well. */ - lparam = (LPARAM) XUNTAG (item, Lisp_Cons); + lparam = (LPARAM) XUNTAG (item, Lisp_Cons, struct Lisp_Cons); /* Notify input thread about hot-key definition being removed, so that it takes effect without needing focus switch. */ -- cgit v1.2.3