Fixes <http://bugs.gnu.org/18495>.
* libguile/smob.h (SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_0_LOC)
(SCM_SMOB_OBJECT_1_LOC, SCM_SMOB_OBJECT_2_LOC)
(SCM_SMOB_OBJECT_3_LOC): These elementary API macros have been broken
by commit 56164dc47f in 2009.
Signed-off-by: David Kastrup <dak@gnu.org>
Subset of a patch by Andreas Schwab <schwab@linux-m68k.org>.
Reported by Rob Browning <rlb@defaultvalue.org>.
* libguile/vm-engine.h (IP_REG)[__mc68000__]: Use register "a3".
Reported by Rob Browning <rlb@defaultvalue.org>.
* libguile/vm-engine.h (IP_REG)[__arm__]: Remove explicit register
choice ("r7") for FP_REG, which was reported to cause compilation
failures on ARM.
Reported by Rob Browning <rlb@defaultvalue.org>.
* libguile/vm-i-scheme.c (ASM_MUL)[ARM]: Add earlyclobber (&) constraint
to the SMULL output registers.
Reported by Eli Zaretskii <eliz@gnu.org>.
* test-suite/standalone/Makefile.am (test_scm_take_locale_symbol_LDADD):
Add libgnu.la, for the 'strdup' replacement.
* lib/lightning.c: Do not mark all registers in unknown state
as live on jit_jmpr, or jit_jmpi to an absolute address. Instead,
treat it as a function call, and only consider JIT_Vn registers
as possibly live.
Fixes <http://bugs.gnu.org/18299>.
Reported by Frank Terbeck <ft@bewatermyfriend.org>.
* module/language/tree-il/analyze.scm (format-string-argument-count):
Add case for ~p.
* test-suite/tests/tree-il.test ("warnings")["format"]("~p", "~p, too
few arguments", "~:p", "~:@p, too many arguments", "~:@p, too few
arguments"): New tests.
* module/language/cps/types.scm (&all-types): Represent true and false
as separate bits, so that #f can be removed from types on true
branches. Adapt all users.
* module/language/cps/type-fold.scm (&scalar-types):
(fold-and-reduce): Adapt to boolean type representation change.
* lib/jit_aarch64-cpu.c, lib/jit_aarch64-fpu.c,
lib/jit_arm-cpu.c, lib/jit_arm-vfp.c,
lib/jit_hppa-cpu.c, lib/jit_hppa-fpu.c,
lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c,
lib/jit_mips-cpu.c, lib/jit_mips-fpu.c,
lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c,
lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c,
lib/jit_s390x.c, lib/jit_sparc-cpu.c,
lib/jit_x86-cpu.c, lib/jit_x86-sse.c,
lib/jit_x86-x87.c: Review generation of all branch
instructions and always adds the jit_class_nospill
bitfield for temporary registers that cannot be spilled
because the reload would be after a conditional jump; the
patch only adds an extra assertion. These conditions do
not happen on documented lightning usage, but can happen
if one uses the not exported jit_get_reg and jit_unget_reg
calls and cause enough register starvation.
* lib/jit_alpha.c: Correct wrong bitmask of most argument
float register arguments, that were being set as callee
save instead of argument registers class.
* lib/jit_arm-sz.c: Regenerate table of known maximum
instruction sizes for the software float fallback,
that implements "virtual" float registers in the stack
and operations as calls to libgcc.
* size.c: Correct typo in the generated jit_arm-sz.c file.
Based on a patch by Eli Zaretskii <eliz@gnu.org>.
* libguile/i18n.c (copy_string_or_null): New static function.
(scm_nl_langinfo): Use 'copy_string_or_null' to copy the result from
'nl_langinfo' and 'nl_langinfo_l' before the next call and before
releasing the locale mutex.
* test-suite/tests/coding.test (with-temp-file): Instead of
hard-coding "/tmp" as the temporary directory, use $TMPDIR or
$TEMP from the environment, and fall back on "/tmp" if none of
those 2 is defined.
* doc/ref/api-utility.texi (Object Properties)[make-object-property]:
Clarify that object-properties cannot be reliably applied to numbers.
Signed-off-by: David Kastrup <dak@gnu.org>
* include/lightning/jit_alpha.h, lib/jit_alpha-cpu.c,
lib/jit_alpha-fpu.c, lib/jit_alpha-sz.c, lib/jit_alpha.c:
New files implementing a lightning Alpha port. Thanks
to Trent Nelson and snakebit.net staff for providing access
to an Alpha system.
* check/float.tst, check/lightning.c, configure.ac,
include/lightning.h, include/lightning/Makefile.am,
include/lightning/jit_private.h, lib/Makefile.am,
lib/jit_disasm.c, lib/jit_size.c, lib/lightning.c:
Minor changes to adapt for the new Alpha port.
* lib/lightning.c: Always mark JIT_RET and JIT_FRET as
live in a function epilog. This is required because
on some ports a complex sequence, allocating one or more
registers, may be required to jump from a ret* to the
epilog, and the lightning api does not have annotations
to know if a function returns a value, or the type of
the return value.
* module/ice-9/boot-9.scm (add-to-load-path): Remove argument from
%load-path (if it exists) before pushing. This also means that the
`elt' will always be at the front of %load-path.
* lib/jit_memory.c: Do not call free on NULL pointers.
* include/lightning/jit_private.h, lib/jit_note.c,
lib/lightning.c: Add a wrapper to memcpy and memmove
to not actually call those functions with a zero size
argument, and likely also a null src or dst.
* include/lightning/jit_private.h, lib/jit_disasm.c,
lib/lightning.c: Remove the global jit_progname variable.
It was being only used in jit_init_debug, that is called
from init_jit, so, just pass an argument.
* module/language/cps/simplify.scm (redominate): Add micropass to
rewrite the scope tree to reflect the dominator tree. Will enable
better eta reduction.
* module/language/cps/slot-allocation.scm (allocate-slots): For
continuations of $call, $callk, and $values with multiple
predecessors, recalculate the set of live slots. Fixes miscompilation
of ice-9/futures.scm:process-future!, broken since the previous patch,
now that $kreceive continuations can have multiple predecessors.