ecl/src
Florian Margaine 09899a3e15 Fix INCF on a THE variable.
The following code:

(let ((foo 0))
  (incf (the fixnum foo) (bar)))

was being expanded into:

(let ((foo 0))
  (LET* ((#:G133 (BAR)) (#:G132 (THE FIXNUM (+ (THE FIXNUM FOO) (BAR)))))
    (DECLARE (:READ-ONLY #:G133))
    (SETQ FOO (THE FIXNUM #:G132))))

Which is obviously going to call (BAR) twice. If (BAR) has
side-effects, then it is going to be buggy.

The old define-modify-macro had an issue with out-of-order INCF/DECF,
which is why it was replaced with Bruno Haible's macro, which is
supposed to improve THE handling. It turns out that the improvement is
a bit broken, so we're just fixing this.

Fixes #401.
2017-09-08 11:57:07 +02:00
..
bdwgc Fix compilation for AIX and xlc compiler. 2016-03-02 12:08:48 -05:00
c environ: accept empty list as nil environment 2017-09-05 20:17:39 +02:00
clos cleanup: move C/CXX part of CLOS to src/c/clos/ directory 2017-05-06 18:27:34 +02:00
cmp environ: accept empty list as nil environment 2017-09-05 20:17:39 +02:00
doc texinfo: Port Compiler from the old documentation 2017-09-06 14:14:29 +02:00
ecl cleanup: remove hierarchical packages interface 2017-05-13 18:06:26 +02:00
gmp gmp: issue autoreconf -ivf (fixes ppc64le builds) 2015-09-02 15:59:18 +02:00
h undo last two commits 2017-08-12 13:33:29 +02:00
libffi cosmetic: libffi updates this file on each compilation 2015-07-27 20:56:31 +02:00
lsp Fix INCF on a THE variable. 2017-09-08 11:57:07 +02:00
newcmp newcmp notes: add some todo, rearrang file 2017-04-28 12:03:04 +02:00
tests Fix INCF on a THE variable. 2017-09-08 11:57:07 +02:00
util cleanup: move C/CXX part of CLOS to src/c/clos/ directory 2017-05-06 18:27:34 +02:00
aclocal.m4 Fix configure on solaris 2017-06-22 00:45:38 +02:00
bare.lsp.in The ECL code no longer uses tabulator characters, they were replaced 2015-09-03 07:35:47 -04:00
compile.lsp.in compiler.lsp.in: be explicit about lsp library init functio name 2017-07-21 13:13:17 +02:00
config.guess Upgrade config.guess and config.sub to newer versions 2013-03-30 23:29:22 +01:00
config.sub Upgrade config.guess and config.sub to newer versions 2013-03-30 23:29:22 +01:00
configure configure.ac: use AC_CHECK_DECLS instead of AC_CHECK_FUNCS to check for availibility of feenableexcept 2017-08-12 13:40:00 +02:00
configure.ac configure.ac: use AC_CHECK_DECLS instead of AC_CHECK_FUNCS to check for availibility of feenableexcept 2017-08-12 13:40:00 +02:00
install.sh
Makefile.in makefile.in: fix libecl flags expansion 2017-08-02 22:18:23 +02:00