emacs/lisp/emacs-lisp
Paul Eggert 42e7e267e5 Avoid Fortran-style floating-point optimization
When optimizing arithmetic operations, avoid optimizations that
are valid for mathematical numbers but invalid for floating-point.
For example, do not optimize (+ 1 v 0.5) to (+ v 1.5), as they may
not be the same due to rounding errors.  In general,
floating-point numbers cannot be constant-folded, since that would
make .elc files platform-dependent.
* lisp/emacs-lisp/byte-opt.el (byte-optimize-associative-math):
Do not optimize floats.
(byte-optimize-nonassociative-math, byte-optimize-approx-equal)
(byte-optimize-delay-constants-math, byte-compile-butlast)
(byte-optimize-logmumble):
Remove; no longer used.
(byte-optimize-minus): Do not optimize (- 0 x) to (- x).
(byte-optimize-multiply): Do not optimize (* -1 x) to (- x).
(byte-optimize-divide): Do not optimize (/ x -1) to (- x).
(logand, logior, logxor): Optimize with byte-optimize-predicate
instead of with byte-optimize-logmumble.
* test/lisp/emacs-lisp/bytecomp-tests.el:
(byte-opt-testsuite-arith-data): Add a couple of test cases.
2018-03-23 12:59:18 -07:00
..
advice.el Merge from origin/emacs-26 2018-01-01 01:13:04 -08:00
autoload.el Remove many items obsolete since Emacs 22.1 2018-03-10 19:15:56 -08:00
avl-tree.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
backquote.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
benchmark.el Merge from origin/emacs-26 2018-02-17 07:50:28 -08:00
bindat.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
byte-opt.el Avoid Fortran-style floating-point optimization 2018-03-23 12:59:18 -07:00
byte-run.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
bytecomp.el Try and fix the more obvious sources of bug#30635 2018-03-22 18:18:26 -04:00
cconv.el * lisp/emacs-lisp/cconv.el (cconv-convert): Fix compiling compiled code 2018-02-02 10:28:34 -05:00
chart.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
check-declare.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
checkdoc.el Quieten cl-lib related compiler warnings 2018-03-22 21:40:24 -07:00
cl-extra.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
cl-generic.el Prevent name clashes between CL structures and builtin types 2018-01-28 19:21:47 +01:00
cl-indent.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
cl-lib.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
cl-macs.el Merge from origin/emacs-26 2018-03-10 18:30:54 -08:00
cl-preloaded.el Add missing module types to cl--typeof-types. 2018-01-28 20:39:58 +01:00
cl-print.el Merge from origin/emacs-26 2018-01-01 01:13:04 -08:00
cl-seq.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
cl.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
copyright.el Merge from origin/emacs-26 2018-01-01 01:13:04 -08:00
crm.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
cursor-sensor.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
debug.el Explicitly require cl-lib where needed 2018-03-16 20:41:17 -04:00
derived.el Remove many items obsolete since Emacs 22.1 2018-03-10 19:15:56 -08:00
disass.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
easy-mmode.el Merge from origin/emacs-26 2018-01-01 01:13:04 -08:00
easymenu.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
edebug.el Merge from origin/emacs-26 2018-02-17 07:50:28 -08:00
eieio-base.el Merge from origin/emacs-26 2018-03-22 07:50:37 -07:00
eieio-compat.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
eieio-core.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
eieio-custom.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
eieio-datadebug.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
eieio-opt.el Define cl-type-definition button type as needed (Bug#28899) 2018-01-30 22:14:02 -05:00
eieio-speedbar.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
eieio.el ; lisp/emacs-lisp/eieio.el (eieio-object-set-name-string): Fix quote. 2018-03-01 22:08:42 -05:00
eldoc.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
elint.el Merge from origin/emacs-26 2018-01-01 01:13:04 -08:00
elp.el Merge from origin/emacs-26 2018-02-17 07:50:28 -08:00
ert-x.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
ert.el Print top time consuming tests if advised 2018-03-19 12:58:45 +01:00
ewoc.el * lisp/emacs-lisp/ewoc.el (ewoc-goto-node): 2018-03-05 14:32:20 -05:00
faceup.el Update copyright year to 2018 2018-01-01 01:25:56 -08:00
find-func.el Merge from origin/emacs-26 2018-01-01 01:13:04 -08:00
float-sup.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
generator.el * lisp/emacs-lisp/generator.el (iter-defun): Add 'doc-string' prop. 2018-01-11 11:24:38 -05:00
generic.el Remove many items obsolete since Emacs 22.1 2018-03-10 19:15:56 -08:00
gv.el * lisp/emacs-lisp/gv.el (char-table-range): Add gv-setter. 2018-01-25 19:20:49 -05:00
helper.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
inline.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
let-alist.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
lisp-mnt.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
lisp-mode.el Merge from origin/emacs-26 2018-01-01 01:13:04 -08:00
lisp.el Merge from origin/emacs-26 2018-01-09 15:29:25 -08:00
macroexp.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
map-ynp.el New function read-answer (bug#30073) 2018-01-21 23:45:43 +02:00
map.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
nadvice.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
package-x.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
package.el Quieten cl-lib related compiler warnings 2018-03-22 21:40:24 -07:00
pcase.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
pp.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
radix-tree.el Quieten cl-lib related compiler warnings 2018-03-22 21:40:24 -07:00
re-builder.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
regexp-opt.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
regi.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
ring.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
rmc.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
rx.el Explicitly require cl-lib where needed 2018-03-16 20:41:17 -04:00
seq.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
shadow.el ; Spelling fix 2018-01-22 08:50:06 -08:00
smie.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
subr-x.el Revert last commit 2018-03-06 18:32:04 +01:00
syntax.el Remove outdated comment in syntax.el 2018-03-03 14:41:16 +02:00
tabulated-list.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
tcover-ses.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
tcover-unsafep.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
testcover.el Explicitly require cl-lib where needed 2018-03-16 20:41:17 -04:00
thunk.el Quieten cl-lib related compiler warnings 2018-03-22 21:40:24 -07:00
timer-list.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
timer.el Remove many items obsolete since Emacs 22.1 2018-03-10 19:15:56 -08:00
tq.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
trace.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00
unsafep.el Remove many items obsolete since Emacs 22.1 2018-03-10 19:15:56 -08:00
warnings.el Update copyright year to 2018 2018-01-01 00:57:59 -08:00