bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|

bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

Michael Welsh Duggan-5
I decided to attempt building the native-comp feature branch, since it
seems like it may make it to mainline fairly soon.  When bootstrapping
with

  make NATIVE_FULL_AOT=1 -j 32 bootstrap

I get an error compiling gnus/gnus-icalendar.el.  I've put the log
below.  I've updated the emacs information from my running emacs below
to match the version of the repository from which I built.


In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0)
 of 2021-02-13 built on miko
Repository revision: d3a399dd299bf7e811cf42950d5f8ac67f063b36
Repository branch: native-comp
Windowing system distributor 'The X.Org Foundation', version 11.0.12010000
System Description: Debian GNU/Linux bullseye/sid

Configured using:
 'configure --without-toolkit-scroll-bars --with-x-toolkit=lucid --with-nativecomp'



Debugger entered--Lisp error: (error "Lisp nesting exceeds ‘max-lisp-eval-depth’")
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) (args-and-body cl--nmp))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) (newenv (cl-next-method-p closure #2 (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) . #5) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))) (binds) (body (cl-labels ((format-header (x) (format "%-12s%s" (propertize ... ... ...) (cadr x)))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ((headers ...)) (when (and ... rsvp) (setq headers ...)) (concat (mapconcat ... headers "\n") "\n\n" description))))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) (cl-next-method-p closure ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) (newenv #2 (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) . #8) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))) (binds) (body (cl-labels ((format-header (x) (format "%-12s%s" ... ...))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let (...) (when ... ...) (concat ... "\n\n" description))))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) (newenv (cl-next-method-p closure ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) #2 (binds) (body (cl-labels ((format-header ... ...)) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ... ... ...)))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) (--dolist-tail--) #2 (binds) (body (cl-labels ((format-header ... ...)) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ... ... ...)))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) (newenv (cl-next-method-p closure #2 (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) . #5) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))) (binds) (body (cl-labels ((format-header (x) (format "%-12s%s" (propertize ... ... ...) (cadr x)))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ((headers ...)) (when (and ... rsvp) (setq headers ...)) (concat (mapconcat ... headers "\n") "\n\n" description))))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) (cl-next-method-p closure ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) (newenv #2 (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) . #8) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))) (binds) (body (cl-labels ((format-header (x) (format "%-12s%s" ... ...))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let (...) (when ... ...) (concat ... "\n\n" description))))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) (newenv (cl-next-method-p closure ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) #2 (binds) (body (cl-labels ((format-header ... ...)) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ... ... ...)))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) (--dolist-tail--) #2 (binds) (body (cl-labels ((format-header ... ...)) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ... ... ...)))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) (newenv (cl-next-method-p closure #2 (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) . #5) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))) (binds) (body (cl-labels ((format-header (x) (format "%-12s%s" (propertize ... ... ...) (cadr x)))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ((headers ...)) (when (and ... rsvp) (setq headers ...)) (concat (mapconcat ... headers "\n") "\n\n" description))))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) (cl-next-method-p closure ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) (newenv #2 (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) . #8) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))) (binds) (body (cl-labels ((format-header (x) (format "%-12s%s" ... ...))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let (...) (when ... ...) (concat ... "\n\n" description))))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) (newenv (cl-next-method-p closure ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) #2 (binds) (body (cl-labels ((format-header ... ...)) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ... ... ...)))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) (--dolist-tail--) #2 (binds) (body (cl-labels ((format-header ... ...)) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ... ... ...)))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) (newenv (cl-next-method-p closure #2 (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) . #5) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))) (binds) (body (cl-labels ((format-header (x) (format "%-12s%s" (propertize ... ... ...) (cadr x)))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ((headers ...)) (when (and ... rsvp) (setq headers ...)) (concat (mapconcat ... headers "\n") "\n\n" description))))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) (cl-next-method-p closure ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) (newenv #2 (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) . #8) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))) (binds) (body (cl-labels ((format-header (x) (format "%-12s%s" ... ...))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let (...) (when ... ...) (concat ... "\n\n" description))))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) (newenv (cl-next-method-p closure ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) #2 (binds) (body (cl-labels ((format-header ... ...)) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ... ... ...)))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) (--dolist-tail--) #2 (binds) (body (cl-labels ((format-header ... ...)) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ... ... ...)))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) (newenv (cl-next-method-p closure #2 (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) . #5) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))) (binds) (body (cl-labels ((format-header (x) (format "%-12s%s" (propertize ... ... ...) (cadr x)))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ((headers ...)) (when (and ... rsvp) (setq headers ...)) (concat (mapconcat ... headers "\n") "\n\n" description))))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) (cl-next-method-p closure ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) (newenv #2 (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) . #8) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))) (binds) (body (cl-labels ((format-header (x) (format "%-12s%s" ... ...))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let (...) (when ... ...) (concat ... "\n\n" description))))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) (newenv (cl-next-method-p closure ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) #2 (binds) (body (cl-labels ((format-header ... ...)) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ... ... ...)))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) (--dolist-tail--) #2 (binds) (body (cl-labels ((format-header ... ...)) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ... ... ...)))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) (newenv (cl-next-method-p closure #2 (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) . #5) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))) (binds) (body (cl-labels ((format-header (x) (format "%-12s%s" (propertize ... ... ...) (cadr x)))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ((headers ...)) (when (and ... rsvp) (setq headers ...)) (concat (mapconcat ... headers "\n") "\n\n" description))))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) (cl-next-method-p closure ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) (newenv #2 (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) . #8) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))) (binds) (body (cl-labels ((format-header (x) (format "%-12s%s" ... ...))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let (...) (when ... ...) (concat ... "\n\n" description))))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))))
  macroexp--fgrep(((--cl-format-header-- #'(lambda (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (car (cdr x)))))) (newenv (cl-next-method-p closure ((args-and-body cl--nmp) (var . cl--nmp) (binding cl-next-method-p cl--nmp) (--dolist-tail--) #2 (binds) (body (cl-labels ((format-header ... ...)) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ... ... ...)))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-call-next-method closure ((args-and-body cl--cnm) (var . cl--cnm) (binding cl-call-next-method cl--cnm) (--dolist-tail--) #2 (binds) (body (cl-labels ((format-header ... ...)) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ... ... ...)))) (bindings (cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) cl--loop-symbol-macs cl--loop-steps cl--loop-result-var cl--loop-result-explicit cl--loop-result cl--loop-name cl--loop-iterator-function cl--loop-initially cl--loop-first-flag cl--loop-finish-flag cl--loop-finally cl--loop-conditions cl--loop-body cl--loop-bindings cl--loop-accum-vars cl--loop-accum-var cl--loop-args cl--bind-forms cl--bind-lets cl--bind-enquote cl--bind-defs cl--bind-block t) (&rest args) (if (eq (car args) cl--labels-magic) (list cl--labels-magic var) (cons 'funcall (cons var args)))) (cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))))
...
  macroexpand-all((cl-flet ((cl-call-next-method cl--cnm) (cl-next-method-p cl--nmp)) (cl-labels ((format-header (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (cadr x)))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ((headers `...)) (when (and (not ...) rsvp) (setq headers (append headers ...))) (concat (mapconcat #'format-header headers "\n") "\n\n" description))))) ((cl-generic-current-method-specializers . #f(compiled-function () #<bytecode 0x1f4000153e91>)) (declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))))
  cl--generic-lambda(((event gnus-icalendar-event) &optional reply-status) ("Format an overview of EVENT details." (cl-labels ((format-header (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (cadr x)))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ((headers `...)) (when (and (not ...) rsvp) (setq headers (append headers ...))) (concat (mapconcat #'format-header headers "\n") "\n\n" description))))))
  #f(compiled-function (arg1 arg2 &rest rest) "Define a new method for generic function NAME.\nThis it defines an implementation of NAME to use for invocations\nof specific types of arguments.\n\nARGS is a list of dispatch arguments (see `cl-defun'), but where\neach variable element is either just a single variable name VAR,\nor a list on the form (VAR TYPE).\n\nFor instance:\n\n  (cl-defmethod foo (bar (format-string string) &optional zot)\n    (format format-string bar))\n\nThe dispatch arguments have to be among the mandatory arguments, and\nall methods of NAME have to use the same set of arguments for dispatch.\nEach dispatch argument and TYPE are specified in ARGS where the corresponding\nformal argument appears as (VAR TYPE) rather than just VAR.\n\nThe optional second argument QUALIFIER is a specifier that\nmodifies how the method is combined with other methods, including:\n   :before  - Method will be called before the primary\n   :after   - Method will be called after the primary\n   :around  - Method will be called around everything else\nThe absence of QUALIFIER means this is a \"primary\" method.\nThe set of acceptable qualifiers and their meaning is defined\n(and can be extended) by the methods of `cl-generic-combine-methods'.\n\nARGS can also include so-called context specializers, introduced by\n`&context' (which should appear right after the mandatory arguments,\nbefore any &optional or &rest).  They have the form (EXPR TYPE) where\nEXPR is an Elisp expression whose value should match TYPE for the\nmethod to be applicable.\n\nThe set of acceptable TYPEs (also called \"specializers\") is defined\n(and can be extended) by the various methods of `cl-generic-generalizers'." #<bytecode 0xd8ef7e2cfe3ee7b>)(gnus-icalendar-event->gnus-calendar ((event gnus-icalendar-event) &optional reply-status) "Format an overview of EVENT details." (cl-labels ((format-header (x) (format "%-12s%s" (propertize (concat (car x) ":") 'face 'bold) (cadr x)))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ((headers `(... ... ... ... ... ...))) (when (and (not (gnus-icalendar-event-reply-p event)) rsvp) (setq headers (append headers `...))) (concat (mapconcat #'format-header headers "\n") "\n\n" description)))))
  macroexpand((cl-defmethod gnus-icalendar-event->gnus-calendar ((event gnus-icalendar-event) &optional reply-status) "Format an overview of EVENT details." (cl-labels ((format-header (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (cadr x)))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ((headers `...)) (when (and (not ...) rsvp) (setq headers (append headers ...))) (concat (mapconcat #'format-header headers "\n") "\n\n" description))))) ((declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))))
  macroexp-macroexpand((cl-defmethod gnus-icalendar-event->gnus-calendar ((event gnus-icalendar-event) &optional reply-status) "Format an overview of EVENT details." (cl-labels ((format-header (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (cadr x)))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ((headers `...)) (when (and (not ...) rsvp) (setq headers (append headers ...))) (concat (mapconcat #'format-header headers "\n") "\n\n" description))))) ((declare-function . byte-compile-macroexpand-declare-function) (eval-when-compile . #f(compiled-function (&rest body) #<bytecode 0x5e4fe9ce2dc9015>)) (eval-and-compile . #f(compiled-function (&rest body) #<bytecode 0x1385801da54a6c7b>)) (with-suppressed-warnings . #f(compiled-function (warnings &rest body) #<bytecode -0xfaa1404d6c9c8f7>))))
  byte-compile-recurse-toplevel((cl-defmethod gnus-icalendar-event->gnus-calendar ((event gnus-icalendar-event) &optional reply-status) "Format an overview of EVENT details." (cl-labels ((format-header (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (cadr x)))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ((headers `...)) (when (and (not ...) rsvp) (setq headers (append headers ...))) (concat (mapconcat #'format-header headers "\n") "\n\n" description))))) #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_45>)
  byte-compile-toplevel-file-form((cl-defmethod gnus-icalendar-event->gnus-calendar ((event gnus-icalendar-event) &optional reply-status) "Format an overview of EVENT details." (cl-labels ((format-header (x) (format "%-12s%s" (propertize (concat ... ":") 'face 'bold) (cadr x)))) (with-slots (organizer summary description location recur uid method rsvp participation-type) event (let ((headers `...)) (when (and (not ...) rsvp) (setq headers (append headers ...))) (concat (mapconcat #'format-header headers "\n") "\n\n" description))))))
  #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_43>(#<buffer  *Compiler Input*>)
  byte-compile-from-buffer(#<buffer  *Compiler Input*>)
  byte-compile-file("gnus/gnus-icalendar.el")
  #f(compiled-function (filename) "Byte-compile FILENAME spilling data from the byte compiler." #<bytecode 0x4256aac1328e719>)("gnus/gnus-icalendar.el")
  apply(#f(compiled-function (filename) "Byte-compile FILENAME spilling data from the byte compiler." #<bytecode 0x4256aac1328e719>) "gnus/gnus-icalendar.el" nil)
  comp-spill-lap-function("gnus/gnus-icalendar.el")
  comp-spill-lap("gnus/gnus-icalendar.el")
  comp--native-compile("gnus/gnus-icalendar.el")
  batch-native-compile()
  batch-byte-native-compile-for-bootstrap()
  command-line-1(("--eval" "(setq load-prefer-newer t)" "-l" "comp" "-f" "batch-byte-n ELC+ELN   mail/mail-utils.elc
ative-compile-for-bootstrap" "gnus/gnus-icalendar.el"))
  command-line()
  normal-top-level()

make[3]: *** [Makefile:319: gnus/gnus-icalendar.elc] Error 255
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/home/md5i/src/emacs/native-comp/lisp'
make[2]: *** [Makefile:353: compile-main] Error 2
make[2]: Leaving directory '/home/md5i/src/emacs/native-comp/lisp'
make[1]: *** [Makefile:421: lisp] Error 2
make[1]: Leaving directory '/home/md5i/src/emacs/native-comp'
make: *** [Makefile:1148: bootstrap] Error 2


--
Michael Welsh Duggan
([hidden email])
Reply | Threaded
Open this post in threaded view
|

bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

Pip Cet
On Thu, Feb 18, 2021 at 10:04 AM Andrea Corallo via Bug reports for
GNU Emacs, the Swiss army knife of text editors
<[hidden email]> wrote:

> Michael Welsh Duggan <[hidden email]> writes:
> > I decided to attempt building the native-comp feature branch, since it
> > seems like it may make it to mainline fairly soon.  When bootstrapping
> > with
> >
> >   make NATIVE_FULL_AOT=1 -j 32 bootstrap
> >
> > I get an error compiling gnus/gnus-icalendar.el.  I've put the log
> > below.  I've updated the emacs information from my running emacs below
> > to match the version of the repository from which I built.
> >
> >
> > In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0)
> >  of 2021-02-13 built on miko
> > Repository revision: d3a399dd299bf7e811cf42950d5f8ac67f063b36
> > Repository branch: native-comp
> > Windowing system distributor 'The X.Org Foundation', version 11.0.12010000
> > System Description: Debian GNU/Linux bullseye/sid
> >
> > Configured using:
> >  'configure --without-toolkit-scroll-bars --with-x-toolkit=lucid --with-nativecomp'
> >
> >
> > Debugger entered--Lisp error: (error "Lisp nesting exceeds ‘max-lisp-eval-depth’")
>
> Hi Michael,
>
> just tried compiling the current branch (f92bb788a0) following your
> configuration with no issues.  Could you retry on the current head maybe
> starting from a "git clean -xfd" to be on the safe side?

One thing I've noticed in my experiments is that many builds that are
interrupted at the wrong point and then resumed produce different
results. I.e. you type "make", then hit Ctrl-C at the wrong time, then
type "make" again and you get a different result.

We should fix that, and it might lead to the behavior Michael has
observed (macroexp being executed from source code when compiling
gnus)...

BTW, I'm also seeing very deep recursion when building the nativecomp
branch, even outside of the garbage collector (which is easy to "fix"
so it allocates more than one object at the same time on the C stack).
Maybe we can avoid that by doing an -O0 compile first, then compiling
the optimized compiler with the unoptimized one?



Reply | Threaded
Open this post in threaded view
|

bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

Emacs - Bugs mailing list
Pip Cet <[hidden email]> writes:

> On Thu, Feb 18, 2021 at 10:04 AM Andrea Corallo via Bug reports for
> GNU Emacs, the Swiss army knife of text editors
> <[hidden email]> wrote:
>> Michael Welsh Duggan <[hidden email]> writes:
>> > I decided to attempt building the native-comp feature branch, since it
>> > seems like it may make it to mainline fairly soon.  When bootstrapping
>> > with
>> >
>> >   make NATIVE_FULL_AOT=1 -j 32 bootstrap
>> >
>> > I get an error compiling gnus/gnus-icalendar.el.  I've put the log
>> > below.  I've updated the emacs information from my running emacs below
>> > to match the version of the repository from which I built.
>> >
>> >
>> > In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0)
>> >  of 2021-02-13 built on miko
>> > Repository revision: d3a399dd299bf7e811cf42950d5f8ac67f063b36
>> > Repository branch: native-comp
>> > Windowing system distributor 'The X.Org Foundation', version 11.0.12010000
>> > System Description: Debian GNU/Linux bullseye/sid
>> >
>> > Configured using:
>> >  'configure --without-toolkit-scroll-bars --with-x-toolkit=lucid --with-nativecomp'
>> >
>> >
>> > Debugger entered--Lisp error: (error "Lisp nesting exceeds ‘max-lisp-eval-depth’")
>>
>> Hi Michael,
>>
>> just tried compiling the current branch (f92bb788a0) following your
>> configuration with no issues.  Could you retry on the current head maybe
>> starting from a "git clean -xfd" to be on the safe side?
>
> One thing I've noticed in my experiments is that many builds that are
> interrupted at the wrong point and then resumed produce different
> results. I.e. you type "make", then hit Ctrl-C at the wrong time, then
> type "make" again and you get a different result.
>
> We should fix that, and it might lead to the behavior Michael has
> observed (macroexp being executed from source code when compiling
> gnus)...
>
> BTW, I'm also seeing very deep recursion when building the nativecomp
> branch, even outside of the garbage collector (which is easy to "fix"
> so it allocates more than one object at the same time on the C stack).
> Maybe we can avoid that by doing an -O0 compile first, then compiling
> the optimized compiler with the unoptimized one?

Agree, I think might be even better in terms of bootstrap time to just
byte compile the initial COMPILE_FIRST files and then re-compiling and
loading them nativelly later-on (before dumping).

Never had time to tackle this.

  Andrea



Reply | Threaded
Open this post in threaded view
|

bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

Michael Welsh Duggan-5
In reply to this post by Michael Welsh Duggan-5
Andrea Corallo <[hidden email]> writes:

> Michael Welsh Duggan <[hidden email]> writes:
>
>> I decided to attempt building the native-comp feature branch, since it
>> seems like it may make it to mainline fairly soon.  When bootstrapping
>> with
>>
>>   make NATIVE_FULL_AOT=1 -j 32 bootstrap
>>
>> I get an error compiling gnus/gnus-icalendar.el.  I've put the log
>> below.  I've updated the emacs information from my running emacs below
>> to match the version of the repository from which I built.
>>
>>
>> In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0)
>>  of 2021-02-13 built on miko
>> Repository revision: d3a399dd299bf7e811cf42950d5f8ac67f063b36
>> Repository branch: native-comp
>> Windowing system distributor 'The X.Org Foundation', version 11.0.12010000
>> System Description: Debian GNU/Linux bullseye/sid
>>
>> Configured using:
>>  'configure --without-toolkit-scroll-bars --with-x-toolkit=lucid --with-nativecomp'
>>
>>
>> Debugger entered--Lisp error: (error "Lisp nesting exceeds ‘max-lisp-eval-depth’")
>
> Hi Michael,
>
> just tried compiling the current branch (f92bb788a0) following your
> configuration with no issues.  Could you retry on the current head maybe
> starting from a "git clean -xfd" to be on the safe side?

I do not encounter the problem compiling from the current branch head
(f92bb788a0).  Thank you.

--
Michael Welsh Duggan
([hidden email])



Reply | Threaded
Open this post in threaded view
|

bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

Pip Cet
In reply to this post by Pip Cet
On Thu, Feb 18, 2021 at 2:33 PM Eli Zaretskii <[hidden email]> wrote:

> > From: Pip Cet <[hidden email]>
> > Date: Thu, 18 Feb 2021 10:14:24 +0000
> > Cc: Michael Welsh Duggan <[hidden email]>, [hidden email]
> >
> > One thing I've noticed in my experiments is that many builds that are
> > interrupted at the wrong point and then resumed produce different
> > results. I.e. you type "make", then hit Ctrl-C at the wrong time, then
> > type "make" again and you get a different result.
>
> What does "different result" mean in this case? is the produced .eln
> file different? or something else?

There are differences both in the .elc and .eln, and I saw different
success/failure behavior but only with local modifications. It's
possible that this is all harmless, but I have the bad habit of
assuming I can just type "make" again and have it resume an
interrupted build, and that certainly does not work on the native-comp
branch (I'm not sure it works on the master branch).

Note that all this is in serial builds. That parallelized builds are
unpredictable is a different issue entirely.

> > BTW, I'm also seeing very deep recursion when building the nativecomp
> > branch
> How do you see that?

Stack overflows in a limited-stack environment, even with the GC code
modified to allocate stack space more efficiently.

> And what code recurses so deeply?

Unfortunately, the environment I'm playing with doesn't have very good
backtrace facilities. (This is WebAssembly run by the Mozilla jsshell,
which has a small-ish stack size limit. I'll try finding what limits
the reported backtrace depth and disabling it.)



Reply | Threaded
Open this post in threaded view
|

bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

Eli Zaretskii
> From: Pip Cet <[hidden email]>
> Date: Fri, 19 Feb 2021 13:31:49 +0000
> Cc: [hidden email], [hidden email], [hidden email]
>
> > > One thing I've noticed in my experiments is that many builds that are
> > > interrupted at the wrong point and then resumed produce different
> > > results. I.e. you type "make", then hit Ctrl-C at the wrong time, then
> > > type "make" again and you get a different result.
> >
> > What does "different result" mean in this case? is the produced .eln
> > file different? or something else?
>
> There are differences both in the .elc and .eln, and I saw different
> success/failure behavior but only with local modifications.

Let's talk about *.elc files first, as this is not supposed to happen.
AFAIR, we write the bytecode into a temporary file, and then rename it
atomically only when the compilation finishes successfully.  So
interrupting should not do any harm, and therefore I'm curious what
kind of differences in *.elc files do you see in these cases.

> It's possible that this is all harmless, but I have the bad habit of
> assuming I can just type "make" again and have it resume an
> interrupted build, and that certainly does not work on the
> native-comp branch (I'm not sure it works on the master branch).

I'd suggest to start with master, as that is supposed to be much more
mature.  If that turns out to work correctly (and (IME it is), then we
could take a look at the native-comp branch, where there could be
problems we didn't yet fix.

In general, Make itself will delete any target files it knows about
that were not fully built at the time of SIGINT.  Maybe we don't tell
Make enough about the files native-comp produces?

> > > BTW, I'm also seeing very deep recursion when building the nativecomp
> > > branch
> > How do you see that?
>
> Stack overflows in a limited-stack environment, even with the GC code
> modified to allocate stack space more efficiently.
>
> > And what code recurses so deeply?
>
> Unfortunately, the environment I'm playing with doesn't have very good
> backtrace facilities. (This is WebAssembly run by the Mozilla jsshell,
> which has a small-ish stack size limit. I'll try finding what limits
> the reported backtrace depth and disabling it.)

I think it'd be interesting to know what code overflows the stack, if
it isn't GC.



Reply | Threaded
Open this post in threaded view
|

bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

Emacs - Bugs mailing list
Eli Zaretskii <[hidden email]> writes:

>> From: Pip Cet <[hidden email]>
>> Date: Fri, 19 Feb 2021 13:31:49 +0000
>> Cc: [hidden email], [hidden email], [hidden email]
>>
>> > > One thing I've noticed in my experiments is that many builds that are
>> > > interrupted at the wrong point and then resumed produce different
>> > > results. I.e. you type "make", then hit Ctrl-C at the wrong time, then
>> > > type "make" again and you get a different result.
>> >
>> > What does "different result" mean in this case? is the produced .eln
>> > file different? or something else?
>>
>> There are differences both in the .elc and .eln, and I saw different
>> success/failure behavior but only with local modifications.
>
> Let's talk about *.elc files first, as this is not supposed to happen.
> AFAIR, we write the bytecode into a temporary file, and then rename it
> atomically only when the compilation finishes successfully.  So
> interrupting should not do any harm, and therefore I'm curious what
> kind of differences in *.elc files do you see in these cases.

In native-comp this is very similar, the elc renaming is postponed to be
done when native compilation is done and the temporary eln has been
renamed to its final name.  As eln compilation is triggered by the elc
targets this is supposed to work, or at least it *should* as it does on
master.

  Andrea



Reply | Threaded
Open this post in threaded view
|

bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

Pip Cet
In reply to this post by Eli Zaretskii
On Fri, Feb 19, 2021 at 1:47 PM Eli Zaretskii <[hidden email]> wrote:

> > From: Pip Cet <[hidden email]>
> > Date: Fri, 19 Feb 2021 13:31:49 +0000
> > Cc: [hidden email], [hidden email], [hidden email]
> >
> > > > One thing I've noticed in my experiments is that many builds that are
> > > > interrupted at the wrong point and then resumed produce different
> > > > results. I.e. you type "make", then hit Ctrl-C at the wrong time, then
> > > > type "make" again and you get a different result.
> > >
> > > What does "different result" mean in this case? is the produced .eln
> > > file different? or something else?
> >
> > There are differences both in the .elc and .eln, and I saw different
> > success/failure behavior but only with local modifications.
>
> Let's talk about *.elc files first, as this is not supposed to happen.

Okay. Here's what I'm seeing (master branch, interrupted after
macroexp.elc is compiled).

--- build-uninterrupted/lisp/emacs-lisp/bytecomp.elc    2021-02-20
01:13:51.706632694 +0000
+++ build-interrupted/lisp/emacs-lisp/bytecomp.elc    2021-02-20
02:26:57.242906775 +0000
-(defalias 'byte-compile-form #[513
"\211 :\204H\09\203 \0\211\305>\206
\0\306!\262\203+\09\203$\0\307!\210\310!\210\202\203A\0
   \203A\09\203<\0\307!\210\311
\202f\312!\210\202f@9\2031@\211\313N\314N\206\\\0\n>\315>\203\236\0
A\211:\203\235\0\211@\211:\203\234\0\211@\211\316=\203\233\0A\211:\203\232\0\211@A\211\204\230\0\211
>\203\227\0\317\320\321 \f
#!\210\210\266\210\210\210\210\322>\203\266\0
A\242\211\242\316=\203\265\0\323A@\311\"\210\210\324\325!\203\320\0\211\305>\206\306\0\306!\262\203\320\0\326\327
\"\210\324\314 \"\203\375\0\211\203\375\0\326\330
;\203\355\0\331\332\333  !\"\202\373\0 \334=\204\372\0\320\335
\"\202\373\0\336#\210 @K\242\337=\203 \317\331\340
@#!\210\203)\341!\203)\342=\204) !\266 \202f\343 !\266
\202f\344@!\203E\f\345>\203E\346!\210\202f@\242\347=\203b\350
!\211\262 =\204b\35\"\210\311 \202f\343!\21\205l\352
)\207" [byte-compile--for-effect byte-compile-delete-errors
byte-compile-interactive-only-functions byte-compile-lexical-variables
byte-optimize (nil t) keywordp byte-compile-set-symbol-position
byte-compile-constant nil byte-compile-variable-ref byte-compile
interactive-only (set symbol-value run-hooks add-hook remove-hook
run-hook-with-args run-hook-with-args-until-success
run-hook-with-args-until-failure) quote byte-compile-report-error
format-message "%s cannot use lexical var `%s'" (add-hook remove-hook)
byte-compile-check-variable byte-compile-warning-enabled-p suspicious
byte-compile-warn "`%s' called as a function" "`%s' is for interactive
use only%s" format "; %s" substitute-command-keys t "; use `%s'
instead." "." macro "`%s' defined after use in %S (missing `require'
of a library file?)" functionp cl-byte-compile-compiler-macro
byte-compile-normal-call byte-code-function-p (t lap)
byte-compile-unfold-bcf lambda macroexp--unfold-lambda
byte-compile-form byte-compile-discard] 17 (#$ . 90529)])
\350>\203\221\351!\210\202\262@\242\352=\203\256\353 !\211\262
=\204\256\35\"\210\306 \202\262\346!\21\205\270\355
)\207" [byte-compile--for-effect byte-compile-const-variables
byte-compile-delete-errors byte-compile-interactive-only-functions
byte-compile-lexical-variables byte-optimize nil (nil t) keywordp
boundp (setting-constant) t byte-compile-set-symbol-position
byte-compile-constant byte-compile-variable-ref byte-compile
interactive-only (set symbol-value run-hooks add-hook remove-hook
run-hook-with-args run-hook-with-args-until-success
run-hook-with-args-until-failure) quote byte-compile-report-error
format-message "%s cannot use lexical var `%s'" (add-hook remove-hook)
byte-compile-check-variable byte-compile-warning-enabled-p suspicious
byte-compile-warn "`%s' called as a function" "`%s' is for interactive
use only%s" format "; %s" substitute-command-keys "; use `%s'
instead." "." macro "`%s' defined after use in %S (missing `require'
of a library file?)" functionp cl-byte-compile-compiler-macro
byte-compile-normal-call byte-code-function-p (t lap)
byte-compile-unfold-bcf lambda macroexp--unfold-lambda
byte-compile-form byte-compile-discard] 17 (#$ . 90718)])

It looks like macroexp--const-symbol-p, a defsubst, is substituted in
both cases, but differently. This makes sense to me given the make
rules, and it's not harmful, but I don't like it.

> AFAIR, we write the bytecode into a temporary file, and then rename it
> atomically only when the compilation finishes successfully.  So
> interrupting should not do any harm, and therefore I'm curious what
> kind of differences in *.elc files do you see in these cases.

I'm not sure I'm seeing harmful differences, just ... differences.

So what happens on the three branches appears to be:

master: harmless differences between interrupted make and uninterrupted make
native-comp: interrupting make at the wrong point will sometimes
result in an unbuildable tree
local: interrupting make at the wrong point and resuming it will
sometimes succeed when the uninterrupted build wouldn't have

We should deal with the first two; the third is likely to be related
to my stack size limit or my local changes.

> > It's possible that this is all harmless, but I have the bad habit of
> > assuming I can just type "make" again and have it resume an
> > interrupted build, and that certainly does not work on the
> > native-comp branch (I'm not sure it works on the master branch).
> I'd suggest to start with master, as that is supposed to be much more
> mature.  If that turns out to work correctly (and (IME it is), then we
> could take a look at the native-comp branch, where there could be
> problems we didn't yet fix.

I'll leave it to you to decide whether the harmless differences I've
seen so far count as incorrect behavior.

> In general, Make itself will delete any target files it knows about
> that were not fully built at the time of SIGINT.  Maybe we don't tell
> Make enough about the files native-comp produces?

So we should delete the early-compilation .elcs if we end up deleting
bootstrap-emacs.pdmp, too?

I'll try getting a usable backtrace for the stack overflow.



Reply | Threaded
Open this post in threaded view
|

bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

Pip Cet
On Sat, Feb 20, 2021 at 8:56 AM Eli Zaretskii <[hidden email]> wrote:
> > From: Pip Cet <[hidden email]>
> > Date: Sat, 20 Feb 2021 04:35:39 +0000
> > Cc: [hidden email], [hidden email], [hidden email]
> >
> > Okay. Here's what I'm seeing (master branch, interrupted after
> > macroexp.elc is compiled).
>
> It's hard to see the differences, since your MUA seemed to have folded
> long lines.

Oh no! Sorry about that.

> Can you send the diffs as an attachment?

I'm sending the complete diff, even though it's a bit large... The
path differences are obviously okay, and I'm not going to complain
about differences in gensym numbering, but byte-optimize-lapcode, to
pick an example at random, differs in the bytecode.

> And when exactly did you interrupt the second run?  The first things
> that get compiled are these:
>
>   COMPILE_FIRST = \
>           $(lisp)/emacs-lisp/macroexp.elc \

HERE

>           $(lisp)/emacs-lisp/cconv.elc    \
>           $(lisp)/emacs-lisp/byte-opt.elc \
>           $(lisp)/emacs-lisp/bytecomp.elc \
>           $(lisp)/emacs-lisp/autoload.elc
>
> Which one of these was being compiled when you pressed Ctrl-C?

cconv.el, after macroexp.el had been compiled successfully.

> > > In general, Make itself will delete any target files it knows about
> > > that were not fully built at the time of SIGINT.  Maybe we don't tell
> > > Make enough about the files native-comp produces?
> >
> > So we should delete the early-compilation .elcs if we end up deleting
> > bootstrap-emacs.pdmp, too?
>
> No, I don't think so.  (What is the relation between
> bootstrap-emacs.pdmp and the produced *.elc files?)

A circular one. bootstrap-emacs.pdmp includes status derived from the
.elc files if those are present before the dump, and it is used to
generate the .elc files otherwise.

> If the
> compilation of these *.elc files has finished, I see no reason to
> delete them, because they should be correct and usable.

Correct and usable, yes. Identical to what they would otherwise have been, no.

bug46502.diff.gz (349K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

Eli Zaretskii
> From: Pip Cet <[hidden email]>
> Date: Sat, 20 Feb 2021 09:15:48 +0000
> Cc: [hidden email], [hidden email], [hidden email]
>
> > Can you send the diffs as an attachment?
>
> I'm sending the complete diff, even though it's a bit large... The
> path differences are obviously okay, and I'm not going to complain
> about differences in gensym numbering, but byte-optimize-lapcode, to
> pick an example at random, differs in the bytecode.

Thanks.  Stefan, any idea why we see differences here?

> > And when exactly did you interrupt the second run?  The first things
> > that get compiled are these:
> >
> >   COMPILE_FIRST = \
> >           $(lisp)/emacs-lisp/macroexp.elc \
>
> HERE
>
> >           $(lisp)/emacs-lisp/cconv.elc    \
> >           $(lisp)/emacs-lisp/byte-opt.elc \
> >           $(lisp)/emacs-lisp/bytecomp.elc \
> >           $(lisp)/emacs-lisp/autoload.elc
> >
> > Which one of these was being compiled when you pressed Ctrl-C?
>
> cconv.el, after macroexp.el had been compiled successfully.

So it's possible that in one case the compilation used some of these
files in .elc form, while in the other case they were used in .el
form?

> > > So we should delete the early-compilation .elcs if we end up deleting
> > > bootstrap-emacs.pdmp, too?
> >
> > No, I don't think so.  (What is the relation between
> > bootstrap-emacs.pdmp and the produced *.elc files?)
>
> A circular one. bootstrap-emacs.pdmp includes status derived from the
> .elc files if those are present before the dump, and it is used to
> generate the .elc files otherwise.

If the differences between the .elc files don't exist, or are
innocent, this doesn't matter, does it?  It's the same as when the
compiler injects the timestamp of the compilation into the object
files it produces.



Reply | Threaded
Open this post in threaded view
|

bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

Pip Cet
On Sat, Feb 20, 2021 at 11:48 AM Eli Zaretskii <[hidden email]> wrote:

> > Date: Sat, 20 Feb 2021 13:21:38 +0200
> > From: Eli Zaretskii <[hidden email]>
> > Cc: [hidden email], [hidden email], [hidden email]
> >
> > > From: Pip Cet <[hidden email]>
> > > Date: Sat, 20 Feb 2021 09:15:48 +0000
> > > Cc: [hidden email], [hidden email], [hidden email]
> > >
> > > > Can you send the diffs as an attachment?
> > >
> > > I'm sending the complete diff, even though it's a bit large... The
> > > path differences are obviously okay, and I'm not going to complain
> > > about differences in gensym numbering, but byte-optimize-lapcode, to
> > > pick an example at random, differs in the bytecode.
> >
> > Thanks.  Stefan, any idea why we see differences here?
>
> Btw, if you let macroexp.el byte-compile uninterrupted, then rename
> the .elc file and re-compile the .el file, do you get identical .elc
> files?

So what I did is this:

1. make
2. wait for bootstrap.pdmp to be built
3. wait for macroexp.elc and the other files in compile-first to be generated
4. interrupt
5. rename byte-opt.elc to byte-opt.elc.1
6. make
7. wait for byte-opt.elc to be rebuilt
8. diff

I saw differences as before.

Did you want me to rename "macroexp.elc" in step 5?



Reply | Threaded
Open this post in threaded view
|

bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

Pip Cet
In reply to this post by Eli Zaretskii
On Sat, Feb 20, 2021 at 3:42 PM Stefan Monnier <[hidden email]> wrote:
> One of the possibility is always the inlining (where we either inline
> the source code or the bytecode depending on whether the function to be
> inlined has already been byte-compiled).

That's what it looks like. Are we supposed to fold constants in both cases?

> Can you try the patch below to see if it makes a difference?

It does, no difference with the patch.



Reply | Threaded
Open this post in threaded view
|

bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

Stefan Monnier
>> One of the possibility is always the inlining (where we either inline
>> the source code or the bytecode depending on whether the function to be
>> inlined has already been byte-compiled).
> That's what it looks like. Are we supposed to fold constants in both cases?

Not sure what you mean by "fold constants", but when inlining byte-code
we "disassemble" the byte code into LAP code (which is just like byte
code but represented as a Lisp list with symbols) an then splice that
into the LAP code of the caller.  So it tends to lead to slightly less
good code because we don't get to apply the source-level optimizer to
the combination of the caller and callee (but we still do apply the
bytecode (so called "peephole") optimizer).

For example, Mattias's new constant propagation code and the resulting
constant folding opportunities doesn't work as well.

We could change the way `defsubst` works so we *always* inline the
source code[1] (but at the cost of having to keep the source code
around).  But it doesn't seem worth it: we already have `cl-defsubst`
which does just that, and we also have `define-inline` which can do an
even better job.

>> Can you try the patch below to see if it makes a difference?
> It does, no difference with the patch.

So the effect of the patch is that the build is now (more) reproducible?


        Stefan


[1] except when cross-inlining from different dialects, of course.




Reply | Threaded
Open this post in threaded view
|

bug#46502: 28.0.50; [feature/native-comp] (d3a399dd) native-comp bootstrap failure

Eli Zaretskii
In reply to this post by Pip Cet
> From: Pip Cet <[hidden email]>
> Date: Sat, 20 Feb 2021 17:00:44 +0000
> Cc: Stefan Monnier <[hidden email]>, [hidden email], [hidden email],
> [hidden email]
>
> > So the conclusion is that the differences have nothing to do with
> > interrupting the build, they are caused by some of the COMPILE_FIRST
> > files being not yet compiled?
>
> Er, I'm not sure what you're saying. They have everything to do with
> interrupting the build, of course, it's what causes them.

??? The build was interrupted after macroexp.el as compiled, so how
can the interrupt affect the next build?