(byte-compile-eval): Adjust to changes in load-history
The `function-history` patch introduced a regression which caused spurious compiler warnings. Fix it. The new code also fixes a bug in the old code, thus causing some new non-spurious warnings. Fix them as well. * lisp/emacs-lisp/bytecomp.el (byte-compile-eval): Adjust to changes in `load-history`. * lisp/gnus/gnus-group.el (nnrss-discover-feed) (nnrss-save-server-data): Use `declare-function`. * lisp/cedet/semantic/wisent/comp.el (wisent-defcontext) (wisent-with-context): * lisp/emacs-lisp/comp.el (comp-op-case): Silence compiler warning.
This commit is contained in:
parent
be2566eeab
commit
cce477cad7
4 changed files with 17 additions and 21 deletions
|
@ -1031,30 +1031,23 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'."
|
|||
(hist-nil-orig current-load-list))
|
||||
(prog1 (eval form lexical-binding)
|
||||
(when (byte-compile-warning-enabled-p 'noruntime)
|
||||
(let ((hist-new load-history)
|
||||
(hist-nil-new current-load-list))
|
||||
(let* ((hist-new
|
||||
;; Get new `current-load-list' for the locally defined funs.
|
||||
(cons (butlast current-load-list
|
||||
(length hist-nil-orig))
|
||||
load-history)))
|
||||
;; Go through load-history, look for newly loaded files
|
||||
;; and mark all the functions defined therein.
|
||||
(while (and hist-new (not (eq hist-new hist-orig)))
|
||||
(let ((xs (pop hist-new))
|
||||
old-autoloads)
|
||||
(let ((xs (pop hist-new)))
|
||||
;; Make sure the file was not already loaded before.
|
||||
(unless (assoc (car xs) hist-orig)
|
||||
(dolist (s xs)
|
||||
(cond
|
||||
((and (consp s) (eq t (car s)))
|
||||
(push (cdr s) old-autoloads))
|
||||
((and (consp s) (memq (car s) '(autoload defun)))
|
||||
(unless (memq (cdr s) old-autoloads)
|
||||
(push (cdr s) byte-compile-noruntime-functions))))))))
|
||||
;; Go through current-load-list for the locally defined funs.
|
||||
(let (old-autoloads)
|
||||
(while (and hist-nil-new (not (eq hist-nil-new hist-nil-orig)))
|
||||
(let ((s (pop hist-nil-new)))
|
||||
(when (and (symbolp s) (not (memq s old-autoloads)))
|
||||
(push s byte-compile-noruntime-functions))
|
||||
(when (and (consp s) (eq t (car s)))
|
||||
(push (cdr s) old-autoloads))))))))))
|
||||
(pcase s
|
||||
(`(defun . ,f)
|
||||
(unless (seq-some #'autoloadp
|
||||
(get (cdr s) 'function-history))
|
||||
(push f byte-compile-noruntime-functions)))))))))))))
|
||||
|
||||
(defun byte-compile-eval-before-compile (form)
|
||||
"Evaluate FORM for `eval-and-compile'."
|
||||
|
|
|
@ -1767,6 +1767,7 @@ This is responsible for generating the proper stack adjustment, when known,
|
|||
and the annotation emission."
|
||||
(declare (debug (body))
|
||||
(indent defun))
|
||||
(declare-function comp-body-eff nil (body op-name sp-delta))
|
||||
`(pcase op
|
||||
,@(cl-loop for (op . body) in cases
|
||||
for sp-delta = (gethash op comp-op-stack-info)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue