• Paul Eggert's avatar
    Use native alignment to access Lisp object data · 0303fab3
    Paul Eggert authored
    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.
font.h 33.9 KB