1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-07 06:50:23 -08:00
emacs/lisp/emacs-lisp
Mattias Engdegård 85a2eb2c78 LAP peephole optimiser improvementsa
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Make the improvements:

- Add the rule

    stack-ref(X) discardN-preserve-tos(Y)
    --> discard(Y) stack-ref(X-Y),                X≥Y
        discard(X) discardN-preserve-tos(Y-X-1),  X<Y

  with the usual equivalences:

    stack-set(1) = discardN-preserve-tos(1)
    stack-ref(0) = dup
    discard(0) = discardN-preserve-tos(0) = no-op

  This rule hoists stack reduction to where it is more likely to be
  exploited further, may reduce the op size through smaller
  immediates, and sometimes removes either or both operations
  outright.

  The rule is inhibited by an immediately following `return` op
  because other rules will produce better code in that case.

- Add the rule

    (discardN-preserve-tos|dup) OP return --> OP return

  where OP is a unary operation such as `not` or `car`.

- Generalise a previous rule to

    NOEFFECT PRODUCER return  -->  PRODUCER return

  where PRODUCER is now any op that pushes a value without looking at
  the stack: const, varref, point etc.
2023-02-11 12:52:18 +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 optimiser improvementsa 2023-02-11 12:52:18 +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 Make edebug see unused variables when lexical-binding is non-nil 2023-02-11 10:45:31 +00: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 Make edebug see unused variables when lexical-binding is non-nil 2023-02-11 10:45:31 +00: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 Fix docstring fontification of CL's 'defstruct' 2023-02-02 20:12:02 +02: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 nadvice: Fix bug#61179 2023-02-04 11:23:31 -05:00
oclosure.el nadvice: Fix bug#61179 2023-02-04 11:23:31 -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 Make edebug see unused variables when lexical-binding is non-nil 2023-02-11 10:45:31 +00: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