emacs/lisp/emacs-lisp
Mattias Engdegård bfd338aad9 LAP peephole optimisation improvements
- Since discardN-preserve-tos(1) and stack-set(1) have the same
  effect, treat them as equivalent in all transformations.

- Move the rule

        discardN-preserve-tos(X) discardN-preserve-tos(Y)
    --> discardN-preserve-tos(X+Y)

  from the final pass to the main iteration since it may enable
  further optimisations.

- Don't apply the rule

    goto(X) ... X: DISCARD --> DISCARD goto(Y) ... X: DISCARD Y:

  when DISCARD could be merged or deleted instead, which is even better.

- Add the rule

    OP const return -> <deleted> const return

  where OP is effect-free.

- Generalise the push-pop annihilation rule to

    PUSH(K) discard(N) -> discard(N-K), N>K
    PUSH(K) discard(N) -> <deleted>,    N=K

  to any N, not just N=1.

- Add the rule

    OP goto(X) Y: OP X: -> <deleted> Y: OP X:

  for any operation OP.

* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Make the changes described above.
2023-02-02 14:46:53 +01:00
..
advice.el Fix an oversight in advice.el 2023-01-19 22:13:25 +02:00
avl-tree.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
backquote.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
backtrace.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
benchmark.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
bindat.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
byte-opt.el LAP peephole optimisation improvements 2023-02-02 14:46:53 +01:00
byte-run.el Styled quotes in compiler warnings 2023-01-03 18:39:06 +01:00
bytecomp.el Better commutative binary numerical op codegen 2023-01-29 13:48:23 +01:00
cconv.el Styled quotes in compiler warnings 2023-01-03 18:39:06 +01:00
chart.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
check-declare.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
checkdoc.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
cl-extra.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
cl-generic.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
cl-indent.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
cl-lib.el Data argument to signal should be a list 2023-01-03 14:03:58 +01:00
cl-macs.el Merge from origin/emacs-29 2023-01-19 06:30:25 +01:00
cl-preloaded.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
cl-print.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
cl-seq.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
comp-cstr.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
comp.el Merge from origin/emacs-29 2023-01-30 07:19:43 +01:00
copyright.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
crm.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
cursor-sensor.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
debug-early.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
debug.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
derived.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
disass.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
easy-mmode.el Styled quotes in compiler warnings 2023-01-03 18:39:06 +01:00
easymenu.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
edebug.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
eieio-base.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
eieio-core.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
eieio-custom.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
eieio-datadebug.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
eieio-opt.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
eieio-speedbar.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
eieio.el Styled quotes in compiler warnings 2023-01-03 18:39:06 +01:00
eldoc.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
elint.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
elp.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
ert-x.el ; Fix typo in ert-with-temp-file 2023-01-13 02:50:39 +01:00
ert.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
ewoc.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
faceup.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
find-func.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
float-sup.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
generate-lisp-file.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
generator.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
generic.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
gv.el Merge from origin/emacs-29 2023-01-01 05:47:47 -05:00
helper.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
hierarchy.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
icons.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
inline.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
let-alist.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
lisp-mnt.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
lisp-mode.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
lisp.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
loaddefs-gen.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
macroexp.el Better lambda quote warning 2023-01-18 18:50:03 +01:00
map-ynp.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
map.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
memory-report.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
multisession.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
nadvice.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
oclosure.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
package-vc.el ; Actually use dummy package descriptor 2023-01-21 19:27:38 +01:00
package-x.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
package.el Merge from origin/emacs-29 2023-01-01 05:47:47 -05:00
pcase.el Styled quotes in compiler warnings 2023-01-03 18:39:06 +01:00
pp.el Fix minor issues with 'pp' and related commands 2023-01-13 10:39:58 +02:00
radix-tree.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
range.el ; * lisp/emacs-lisp/range.el: Fix some typos 2023-01-28 17:30:42 +01:00
re-builder.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
regexp-opt.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
regi.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
ring.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
rmc.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
rx.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
seq.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
shadow.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
shortdoc.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
shorthands.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
smie.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
subr-x.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
syntax.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
tabulated-list.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
tcover-ses.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
testcover.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
text-property-search.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
thunk.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
timer-list.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
timer.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
tq.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
trace.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
unsafep.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
vtable.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
warnings.el Fix display of warnings on w32 console 2023-01-17 15:44:51 +02:00