From: Paul Eggert Date: Thu, 15 Aug 2019 17:51:03 +0000 (-0700) Subject: Fix typeof portability issue with bitfields X-Git-Tag: emacs-27.0.90~1609 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=96ef76e4e7df73802bf1f2a19c96a143ae365b66;p=emacs.git Fix typeof portability issue with bitfields Problem reported by Glenn Morris in: https://lists.gnu.org/r/emacs-devel/2019-08/msg00300.html * src/lisp.h (lisp_h_make_fixnum): Use typeof (+(n)) instead of typeof (n), so that it works with compilers that do not allow typeof to be applied to a bitfield. --- diff --git a/src/lisp.h b/src/lisp.h index 1c98925fa8d..56ad99b8e39 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -401,7 +401,7 @@ typedef EMACS_INT Lisp_Word; XIL ((EMACS_INT) (((EMACS_UINT) (n) << INTTYPEBITS) + Lisp_Int0)) # if defined HAVE_STATEMENT_EXPRESSIONS && defined HAVE_TYPEOF # define lisp_h_make_fixnum(n) \ - ({ typeof (n) lisp_h_make_fixnum_n = n; \ + ({ typeof (+(n)) lisp_h_make_fixnum_n = n; \ eassert (!FIXNUM_OVERFLOW_P (lisp_h_make_fixnum_n)); \ lisp_h_make_fixnum_wrap (lisp_h_make_fixnum_n); }) # else