unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9
@ 2023-05-17 17:38 Spencer Baugh
  2023-05-17 17:45 ` Eli Zaretskii
  2023-05-17 17:57 ` Paul Eggert
  0 siblings, 2 replies; 12+ messages in thread
From: Spencer Baugh @ 2023-05-17 17:38 UTC (permalink / raw)
  To: 63556; +Cc: Paul Eggert


Commit 0f5b1fcdf0be8c1b3084518f1c4f6f375828094b "Help GCC compute
modiff_incr" added usage of _Generic, which breaks the build for me.  I
think it's because I'm on gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44),
and _Generic was added in 4.9?

If we want to drop support for 4.8 that is fine with me, I just figure
this was unintentional.



In GNU Emacs 29.0.90 (build 3, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.15.12, Xaw scroll bars) of 2023-05-17 built on
 igm-qws-u22796a
Repository revision: 4d08492296c2a6d2910f2b740c2d2508275458fc
Repository branch: emacs-29
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
System Description: CentOS Linux 7 (Core)

Configured using:
 'configure --with-x-toolkit=lucid --with-gif=ifavailable'

Configured features:
CAIRO DBUS FREETYPE GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND
SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XINPUT2 XPM LUCID
ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Compilation

Minor modes in effect:
  jane-fe-minor-mode: t
  editorconfig-mode: t
  which-function-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  shell-dirtrack-mode: t
  server-mode: t
  windmove-mode: t
  savehist-mode: t
  save-place-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  buffer-read-only: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/project hides /home/sbaugh/.emacs.d/elpa/project-0.9.8/project
/usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/xref hides /home/sbaugh/.emacs.d/elpa/xref-1.6.3/xref
/usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/csharp-mode hides /home/sbaugh/src/emacs/emacs-29/lisp/progmodes/csharp-mode
/usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/xref hides /home/sbaugh/src/emacs/emacs-29/lisp/progmodes/xref
/usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/project hides /home/sbaugh/src/emacs/emacs-29/lisp/progmodes/project
/usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/eldoc hides /home/sbaugh/src/emacs/emacs-29/lisp/emacs-lisp/eldoc
/usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/auctex/lpath hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/dictionary/lpath
/home/sbaugh/src/emacs/emacs-29/lisp/net/dictionary hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/dictionary/dictionary
/usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/caml-font hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/ocaml/caml-font
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-version hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-version
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-loaddefs hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-loaddefs
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-keys hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-keys
/home/sbaugh/src/emacs/emacs-29/lisp/org/ol hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-perl hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-perl
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-core hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-core
/home/sbaugh/src/emacs/emacs-29/lisp/org/ox hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox
/home/sbaugh/src/emacs/emacs-29/lisp/org/ol-rmail hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-rmail
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-octave hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-octave
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-comint hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-comint
/home/sbaugh/src/emacs/emacs-29/lisp/org/ol-w3m hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-w3m
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-org hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-org
/home/sbaugh/src/emacs/emacs-29/lisp/org/ox-texinfo hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-texinfo
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-inlinetask hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-inlinetask
/home/sbaugh/src/emacs/emacs-29/lisp/org/ol-mhe hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-mhe
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-ocaml hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-ocaml
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-clojure hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-clojure
/home/sbaugh/src/emacs/emacs-29/lisp/org/ox-publish hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-publish
/home/sbaugh/src/emacs/emacs-29/lisp/org/ol-irc hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-irc
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-calc hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-calc
/home/sbaugh/src/emacs/emacs-29/lisp/org/ox-odt hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-odt
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-id hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-id
/home/sbaugh/src/emacs/emacs-29/lisp/org/ol-gnus hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-gnus
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-matlab hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-matlab
/home/sbaugh/src/emacs/emacs-29/lisp/org/ox-icalendar hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-icalendar
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-footnote hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-footnote
/home/sbaugh/src/emacs/emacs-29/lisp/org/ol-bibtex hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-bibtex
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-lisp hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-lisp
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-C hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-C
/home/sbaugh/src/emacs/emacs-29/lisp/org/ox-org hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-org
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-indent hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-indent
/home/sbaugh/src/emacs/emacs-29/lisp/org/ol-info hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-info
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-maxima hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-maxima
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-awk hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-awk
/home/sbaugh/src/emacs/emacs-29/lisp/org/ox-man hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-man
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-goto hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-goto
/home/sbaugh/src/emacs/emacs-29/lisp/org/ox-md hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-md
/home/sbaugh/src/emacs/emacs-29/lisp/org/ol-eshell hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-eshell
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-lua hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-lua
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-habit hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-habit
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-R hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-R
/home/sbaugh/src/emacs/emacs-29/lisp/org/ol-eww hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-eww
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-makefile hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-makefile
/home/sbaugh/src/emacs/emacs-29/lisp/org/ox-latex hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-latex
/home/sbaugh/src/emacs/emacs-29/lisp/org/ol-docview hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-docview
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-lob hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-lob
/home/sbaugh/src/emacs/emacs-29/lisp/org/ox-beamer hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-beamer
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-faces hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-faces
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob
/home/sbaugh/src/emacs/emacs-29/lisp/org/ox-html hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-html
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-feed hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-feed
/home/sbaugh/src/emacs/emacs-29/lisp/org/ol-bbdb hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-bbdb
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-lilypond hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-lilypond
/home/sbaugh/src/emacs/emacs-29/lisp/org/ox-ascii hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-ascii
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-latex hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-latex
/home/sbaugh/src/emacs/emacs-29/lisp/org/org hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-tangle hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-tangle
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-tempo hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-tempo
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-duration hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-duration
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-sqlite hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-sqlite
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-entities hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-entities
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-table hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-table
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-js hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-js
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-table hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-table
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-sql hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-sql
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-timer hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-timer
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-element hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-element
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-java hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-java
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-ctags hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-ctags
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-shell hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-shell
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-groovy hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-groovy
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-src hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-src
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-datetree hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-datetree
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-haskell hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-haskell
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-plot hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-plot
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-compat hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-compat
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-screen hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-screen
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-fortran hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-fortran
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-protocol hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-protocol
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-crypt hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-crypt
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-sed hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-sed
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-gnuplot hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-gnuplot
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-pcomplete hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-pcomplete
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-colview hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-colview
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-scheme hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-scheme
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-forth hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-forth
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-num hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-num
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-clock hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-clock
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-exp hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-exp
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-mouse hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-mouse
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-capture hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-capture
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-sass hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-sass
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-eval hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-eval
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-ref hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-ref
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-emacs-lisp hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-emacs-lisp
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-mobile hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-mobile
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-ruby hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-ruby
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-eshell hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-eshell
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-lint hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-lint
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-agenda hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-agenda
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-macro hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-macro
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-attach-git hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-attach-git
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-processing hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-processing
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-css hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-css
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-dot hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-dot
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-list hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-list
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-macs hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-macs
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-attach hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-attach
/home/sbaugh/src/emacs/emacs-29/lisp/org/org-archive hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-archive
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-python hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-python
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-plantuml hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-plantuml
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-ditaa hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-ditaa
/home/sbaugh/src/emacs/emacs-29/lisp/org/ob-julia hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/contrib/lisp/ob-julia
/home/sbaugh/src/emacs/emacs-29/lisp/org/ol-man hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/contrib/lisp/ol-man
/home/sbaugh/src/emacs/emacs-29/lisp/org/ox-koma-letter hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/contrib/lisp/ox-koma-letter
/home/sbaugh/.emacs.d/elpa/dash-2.19.1/dash hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/dash/dash
/home/sbaugh/.emacs.d/elpa/dash-2.19.1/dash-functional hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/dash/dash-functional

Features:
(shadow emacsbug grep sh-script treesit executable misearch
multi-isearch cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles
cc-align cc-engine cc-vars cc-defs goto-addr texinfo texinfo-loaddefs
magit-imenu git-rebase face-remap bug-reference vc-git vc-bzr vc-src
vc-sccs vc-svn vc-cvs vc-rcs log-view vc-fe qp sort smiley gnus-cite
mail-extr textsec uni-scripts idna-mapping ucs-normalize uni-confusable
textsec-check gnus-async gnus-bcklg gnus-ml disp-table nndoc gnus-dup
display-line-numbers mm-archive url-http-ntlm ntlm hmac-md5 hex-util md4
url-cache debbugs-gnu debbugs-compat debbugs soap-client url-http url-gw
rng-xsd rng-dt rng-util xsd-regexp network-stream nsm gnus-agent
gnus-srvr gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu
mml2015 mm-view mml-smime smime gnutls dig nntp gnus-cache gnus-sum shr
pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start
gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7 nnoo
gnus-spec gnus-int gnus-range gnus-win gnus nnheader range cus-edit
cus-load wid-edit vc-hg vc-dir vc vc-dispatcher tramp tramp-loaddefs
trampver tramp-integration tramp-compat parse-time iso8601 ls-lisp ffap
jane-merlin merlin-imenu merlin-xref merlin-cap merlin jane-async-merlin
jane-completion jane-common jane-project xref jane-fe-menu ecaml_plugin
linum view gopcaml magit-bookmark bookmark image+ advice image-file
image-converter editorconfig editorconfig-core editorconfig-core-handle
editorconfig-fnmatch whitespace jane-auto-modes vba-mode markdown-mode
color jane jane-micro-features jane-diff unified-test-mode shell-file
core core-buffer core-error core-util ert pp ewoc debug backtrace
jane-sexp jane-ocaml jane-tuareg-theme tuareg tuareg-compat tuareg-opam
skeleton flymake-proc flymake warnings thingatpt smie caml-types
caml-help caml-emacs find-file compile jane-cr jane-align
jane-deprecated jane-smerge gnu-elpa-keyring-update jane-ocp-indent
ocp-indent cl jane-util page-ext dired-x magit-extras project
magit-submodule magit-obsolete magit-blame magit-stash magit-reflog
magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote
magit-commit magit-sequence magit-notes magit-worktree magit-tag
magit-merge magit-branch magit-reset magit-files magit-refs magit-status
magit magit-repos magit-apply magit-wip magit-log which-func imenu
magit-diff smerge-mode diff diff-mode git-commit log-edit message
sendmail yank-media puny dired dired-loaddefs rfc822 mml mml-sec epa epg
rfc6068 epg-config gnus-util text-property-search mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log
magit-core magit-autorevert autorevert filenotify magit-margin
magit-transient magit-process with-editor shell server magit-mode
transient edmacro kmacro magit-git magit-section magit-utils crm dash
cl-extra help-mode windmove org ob ob-tangle ob-ref ob-lob ob-table
ob-exp org-macro org-src ob-comint org-pcomplete pcomplete org-list
org-footnote org-faces org-entities time-date noutline outline icons
ob-emacs-lisp ob-core ob-eval org-cycle org-table ol rx org-fold
org-fold-core org-keys oc org-loaddefs find-func cal-menu calendar
cal-loaddefs org-version org-compat org-macs format-spec gdb-mi bindat
gud comint easy-mmode files-x derived ansi-osc ansi-color ring vundo
pcase cyberpunk-theme savehist saveplace project-autoloads
vundo-autoloads magit-autoloads xref-autoloads csv-mode-autoloads
magit-section-autoloads cyberpunk-theme-autoloads
url-http-ntlm-autoloads url-auth git-commit-autoloads
with-editor-autoloads finder-inf info dash-autoloads vc-hgcmd-autoloads
package browse-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie generate-lisp-file url-domsuf url-util mailcap
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
password-cache json subr-x map byte-opt gv bytecomp byte-compile
url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify
dynamic-setting system-font-setting font-render-setting cairo x-toolkit
xinput2 x multi-tty make-network-process emacs)

Memory information:
((conses 16 777364 43859)
 (symbols 48 47737 56)
 (strings 32 171876 9815)
 (string-bytes 1 5612215)
 (vectors 16 95026)
 (vector-slots 8 1172146 106982)
 (floats 8 569 272)
 (intervals 56 7572 0)
 (buffers 976 41)
 (heap 1024 68944 7941))





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9
  2023-05-17 17:38 bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9 Spencer Baugh
@ 2023-05-17 17:45 ` Eli Zaretskii
  2023-05-17 17:57 ` Paul Eggert
  1 sibling, 0 replies; 12+ messages in thread
From: Eli Zaretskii @ 2023-05-17 17:45 UTC (permalink / raw)
  To: Spencer Baugh; +Cc: eggert, 63556

> Cc: Paul Eggert <eggert@cs.ucla.edu>
> From: Spencer Baugh <sbaugh@janestreet.com>
> Date: Wed, 17 May 2023 13:38:30 -0400
> 
> 
> Commit 0f5b1fcdf0be8c1b3084518f1c4f6f375828094b "Help GCC compute
> modiff_incr" added usage of _Generic, which breaks the build for me.  I
> think it's because I'm on gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44),
> and _Generic was added in 4.9?
> 
> If we want to drop support for 4.8 that is fine with me, I just figure
> this was unintentional.

I don't think we want to drop support for GCC 4.8, no.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9
  2023-05-17 17:38 bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9 Spencer Baugh
  2023-05-17 17:45 ` Eli Zaretskii
@ 2023-05-17 17:57 ` Paul Eggert
  2023-05-18 11:11   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-05-18 20:32   ` Paul Eggert
  1 sibling, 2 replies; 12+ messages in thread
From: Paul Eggert @ 2023-05-17 17:57 UTC (permalink / raw)
  To: Spencer Baugh; +Cc: 63556

[-- Attachment #1: Type: text/plain, Size: 397 bytes --]

On 2023-05-17 10:38, Spencer Baugh wrote:
> I think it's because I'm on gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44),
> and _Generic was added in 4.9?

Thanks for reporting the problem. Since _Generic is used here merely as 
a micro-optimization on 32-bit platforms, it's not worth whatever 
porting hassle you've run into, so I installed the attached patch so 
that modiff no longer uses _Generic.

[-- Attachment #2: 0001-Port-modiff-changes-to-GCC-4.8.5.patch --]
[-- Type: text/x-patch, Size: 1767 bytes --]

From 0bba1b8c3df8b7b53e08fd69dcc832d253e7a2d1 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Wed, 17 May 2023 10:53:26 -0700
Subject: [PATCH] Port modiff changes to GCC 4.8.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Problem reported by Spencer Baugh.
* src/lisp.h (elogb): Now simply a function on unsigned long long int.
This avoids problems porting to GCC 4.8.5 20150623 (Red Hat 4.8.5-44).
There may be a minor runtime cost on 32-bit platforms but it’s
not worth worrying about.
---
 src/lisp.h | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/src/lisp.h b/src/lisp.h
index c9a64f07427..57c1c7395c1 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3906,18 +3906,11 @@ integer_to_uintmax (Lisp_Object num, uintmax_t *n)
 }
 
 /* Return floor (log2 (N)) as an int, where 0 < N <= ULLONG_MAX.  */
-#if (201112 <= __STDC_VERSION__ && INT_MAX <= UINT_MAX \
-     && LONG_MAX <= ULONG_MAX && LLONG_MAX <= ULLONG_MAX)
-# define elogb(n) \
-    _Generic (+(n), \
-	      int:           UINT_WIDTH   - 1 - count_leading_zeros    (n), \
-	      unsigned int:  UINT_WIDTH   - 1 - count_leading_zeros    (n), \
-	      long:          ULONG_WIDTH  - 1 - count_leading_zeros_l  (n), \
-	      unsigned long: ULONG_WIDTH  - 1 - count_leading_zeros_l  (n), \
-	      default:       ULLONG_WIDTH - 1 - count_leading_zeros_ll (n))
-#else
-# define elogb(n) (ULLONG_WIDTH - 1 - count_leading_zeros_ll (n))
-#endif
+INLINE int
+elogb (unsigned long long int n)
+{
+  return ULLONG_WIDTH - 1 - count_leading_zeros_ll (n);
+}
 
 /* A modification count.  These are wide enough, and incremented
    rarely enough, so that they should never overflow a 60-bit counter
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9
  2023-05-17 17:57 ` Paul Eggert
@ 2023-05-18 11:11   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-05-18 11:42     ` Eli Zaretskii
  2023-05-18 14:40     ` Paul Eggert
  2023-05-18 20:32   ` Paul Eggert
  1 sibling, 2 replies; 12+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-05-18 11:11 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Spencer Baugh, 63556

Paul Eggert <eggert@cs.ucla.edu> writes:

> Thanks for reporting the problem. Since _Generic is used here merely
> as a micro-optimization on 32-bit platforms, it's not worth whatever
> porting hassle you've run into, so I installed the attached patch so
> that modiff no longer uses _Generic.

Would anyone mind if I made configure check for that?

Btw, couldn't the macro be defined to something along the lines of this
when the compiler only supports C99?

  #define foo(expression)			  \
    (sizeof (expression) == sizeof (signed char)  \
     ? code_for_signed_char			  \
     : (sizeof (expression) == sizeof (short int) \
	? code_for_short_int			  \
	: (sizeof (expression) == sizeof (int)	  \
	   ? code_for_int			  \
	   ... and so on





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9
  2023-05-18 11:11   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-05-18 11:42     ` Eli Zaretskii
  2023-05-18 13:21       ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-05-18 14:40     ` Paul Eggert
  1 sibling, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2023-05-18 11:42 UTC (permalink / raw)
  To: Po Lu; +Cc: sbaugh, eggert, 63556

> Cc: Spencer Baugh <sbaugh@janestreet.com>, 63556@debbugs.gnu.org
> Date: Thu, 18 May 2023 19:11:07 +0800
> From:  Po Lu via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> 
> Paul Eggert <eggert@cs.ucla.edu> writes:
> 
> > Thanks for reporting the problem. Since _Generic is used here merely
> > as a micro-optimization on 32-bit platforms, it's not worth whatever
> > porting hassle you've run into, so I installed the attached patch so
> > that modiff no longer uses _Generic.
> 
> Would anyone mind if I made configure check for that?

Depends on how complex is that, and what problem does it solve.

> Btw, couldn't the macro be defined to something along the lines of this
> when the compiler only supports C99?
> 
>   #define foo(expression)			  \
>     (sizeof (expression) == sizeof (signed char)  \
>      ? code_for_signed_char			  \
>      : (sizeof (expression) == sizeof (short int) \
> 	? code_for_short_int			  \
> 	: (sizeof (expression) == sizeof (int)	  \
> 	   ? code_for_int			  \
> 	   ... and so on

AFAIR, sizeof is a compile-time expression, the preprocessor cannot
evaluate it.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9
  2023-05-18 11:42     ` Eli Zaretskii
@ 2023-05-18 13:21       ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-05-18 14:12         ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-05-18 13:21 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: sbaugh, eggert, 63556

Eli Zaretskii <eliz@gnu.org> writes:

> Depends on how complex is that, and what problem does it solve.

The problem of using `long long' on systems with less than 64
significant bits in their words.  I don't think that's a particularly
good idea -- once such uses pile up, Emacs will gradually become slower
and slower on such systems.

>> Btw, couldn't the macro be defined to something along the lines of this
>> when the compiler only supports C99?
>> 
>>   #define foo(expression)			  \
>>     (sizeof (expression) == sizeof (signed char)  \
>>      ? code_for_signed_char			  \
>>      : (sizeof (expression) == sizeof (short int) \
>> 	? code_for_short_int			  \
>> 	: (sizeof (expression) == sizeof (int)	  \
>> 	   ? code_for_int			  \
>> 	   ... and so on
>
> AFAIR, sizeof is a compile-time expression, the preprocessor cannot
> evaluate it.

It doesn't have to be evaluated by the preprocessor (and nor is
_Generic.)  It just needs to expand to an expression that does the right
thing.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9
  2023-05-18 13:21       ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-05-18 14:12         ` Eli Zaretskii
  0 siblings, 0 replies; 12+ messages in thread
From: Eli Zaretskii @ 2023-05-18 14:12 UTC (permalink / raw)
  To: Po Lu; +Cc: sbaugh, eggert, 63556

> From: Po Lu <luangruo@yahoo.com>
> Cc: eggert@cs.ucla.edu,  sbaugh@janestreet.com,  63556@debbugs.gnu.org
> Date: Thu, 18 May 2023 21:21:51 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > Depends on how complex is that, and what problem does it solve.
> 
> The problem of using `long long' on systems with less than 64
> significant bits in their words.  I don't think that's a particularly
> good idea -- once such uses pile up, Emacs will gradually become slower
> and slower on such systems.

What does this have to do with _Generic?

> >>   #define foo(expression)			  \
> >>     (sizeof (expression) == sizeof (signed char)  \
> >>      ? code_for_signed_char			  \
> >>      : (sizeof (expression) == sizeof (short int) \
> >> 	? code_for_short_int			  \
> >> 	: (sizeof (expression) == sizeof (int)	  \
> >> 	   ? code_for_int			  \
> >> 	   ... and so on
> >
> > AFAIR, sizeof is a compile-time expression, the preprocessor cannot
> > evaluate it.
> 
> It doesn't have to be evaluated by the preprocessor (and nor is
> _Generic.)  It just needs to expand to an expression that does the right
> thing.

And what is "the right thing" in this case?

I guess I don't understand what this has to do with _Generic.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9
  2023-05-18 11:11   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-05-18 11:42     ` Eli Zaretskii
@ 2023-05-18 14:40     ` Paul Eggert
  2023-05-19  0:46       ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 1 reply; 12+ messages in thread
From: Paul Eggert @ 2023-05-18 14:40 UTC (permalink / raw)
  To: Po Lu; +Cc: Spencer Baugh, 63556

On 5/18/23 04:11, Po Lu wrote:

> Would anyone mind if I made configure check for that?

There would be problems in doing that. GCC and Clang both have problems 
with _Generic (suggested by this original bug report), and some of them 
have to do with which warnings you've enabled. The configure-time check 
would run without the warnings whereas the build would run with them.

This is partly why intprops-internal.h has given up on _Generic with GCC 
and Clang; see its ifdefs. I assumed that these problems didn't apply to 
their simple use in elogb, but apparently I assumed incorrectly.


> Btw, couldn't the macro be defined to something along the lines of this
> when the compiler only supports C99?
> 
>    #define foo(expression)			  \
>      (sizeof (expression) == sizeof (signed char)  \

That wouldn't work on unusual platforms that have padding bits. Of 
course we could simply refuse to port to targets like that; still, I'd 
be reluctant to do that just for this little issue.


> The problem of using `long long' on systems with less than 64
> significant bits in their words.  I don't think that's a particularly
> good idea -- once such uses pile up, Emacs will gradually become slower
> and slower on such systems.

I couldn't measure the slowdown in this case. Until it's measurable I 
wouldn't worry about it. To some extent I put in that _Generic 
originally more as documentation than as an actual attempt to speed 
things up.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9
  2023-05-17 17:57 ` Paul Eggert
  2023-05-18 11:11   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-05-18 20:32   ` Paul Eggert
  1 sibling, 0 replies; 12+ messages in thread
From: Paul Eggert @ 2023-05-18 20:32 UTC (permalink / raw)
  To: Spencer Baugh; +Cc: 63556-done

Oh, I see I forgot to mark bug#63556 as fixed. Doing that now. For the 
record, the fix is here:

https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=0bba1b8c3df8b7b53e08fd69dcc832d253e7a2d1





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9
  2023-05-18 14:40     ` Paul Eggert
@ 2023-05-19  0:46       ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-05-19  3:05         ` Paul Eggert
  0 siblings, 1 reply; 12+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-05-19  0:46 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Spencer Baugh, 63556

Paul Eggert <eggert@cs.ucla.edu> writes:

> There would be problems in doing that. GCC and Clang both have
> problems with _Generic (suggested by this original bug report), and
> some of them have to do with which warnings you've enabled. The
> configure-time check would run without the warnings whereas the build
> would run with them.
>
> This is partly why intprops-internal.h has given up on _Generic with
> GCC and Clang; see its ifdefs. I assumed that these problems didn't
> apply to their simple use in elogb, but apparently I assumed
> incorrectly.

[...]

>> Btw, couldn't the macro be defined to something along the lines of this
>> when the compiler only supports C99?
>>    #define foo(expression)			  \
>>      (sizeof (expression) == sizeof (signed char)  \
>
> That wouldn't work on unusual platforms that have padding bits. Of
> course we could simply refuse to port to targets like that; still, I'd
> be reluctant to do that just for this little issue.

How does intprops.h work on such systems?

> I couldn't measure the slowdown in this case. Until it's measurable I
> wouldn't worry about it. To some extent I put in that _Generic
> originally more as documentation than as an actual attempt to speed
> things up.

OK, but that's the second use of `long long' in src/ outside of
NT-specific files.  I can't help but be a little skittish.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9
  2023-05-19  0:46       ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-05-19  3:05         ` Paul Eggert
  2023-05-19  3:18           ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 12+ messages in thread
From: Paul Eggert @ 2023-05-19  3:05 UTC (permalink / raw)
  To: Po Lu; +Cc: Spencer Baugh, 63556

On 5/18/23 17:46, Po Lu wrote:

> How does intprops.h work on such systems?

It relies on _Generic. (Those systems use neither GCC nor Clang.)


> OK, but that's the second use of `long long' in src/ outside of
> NT-specific files.  I can't help but be a little skittish.

Fair enough, although I see more than just one other use: EMACS_INT 
(32-bit platforms configured --with-wide-int), color_distance, 
time_from_jiffies (in Linux), system_process_attributes (in Linux).

Currently there's a 'verify (PTRDIFF_MAX <= ULLONG_MAX);' protecting the 
use of elogb in lisp.h. Would it help to add a 'verify (max 
(-MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM) <= ULLONG_MAX);' to 
protect its use in floatfns.c?





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9
  2023-05-19  3:05         ` Paul Eggert
@ 2023-05-19  3:18           ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 12+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-05-19  3:18 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Spencer Baugh, 63556

Paul Eggert <eggert@cs.ucla.edu> writes:

> On 5/18/23 17:46, Po Lu wrote:
>
>> How does intprops.h work on such systems?
>
> It relies on _Generic. (Those systems use neither GCC nor Clang.)

What about in C99 hosts?

> Fair enough, although I see more than just one other use: EMACS_INT
> (32-bit platforms configured --with-wide-int), color_distance,

`color_distance' is the first use I was referring to.  And, so far,
`--with-wide-int' is optional.

> time_from_jiffies (in Linux), system_process_attributes (in Linux).

These seem to be system-specific.

> Currently there's a 'verify (PTRDIFF_MAX <= ULLONG_MAX);' protecting
> the use of elogb in lisp.h. Would it help to add a 'verify (max
> (-MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM) <= ULLONG_MAX);' to
> protect its use in floatfns.c?

Sure.  But it would make me feel a lot better if we could get away
without using `long long' at all on 32-bit systems.





^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-05-19  3:18 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-17 17:38 bug#63556: 29.0.90; Use of _Generic breaks Emacs build on GCC <4.9 Spencer Baugh
2023-05-17 17:45 ` Eli Zaretskii
2023-05-17 17:57 ` Paul Eggert
2023-05-18 11:11   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-18 11:42     ` Eli Zaretskii
2023-05-18 13:21       ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-18 14:12         ` Eli Zaretskii
2023-05-18 14:40     ` Paul Eggert
2023-05-19  0:46       ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-19  3:05         ` Paul Eggert
2023-05-19  3:18           ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-18 20:32   ` Paul Eggert

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).