On Sun 22 Jul 2018, Andy Moreton wrote: > On Sun 22 Jul 2018, Tom Tromey wrote: > >>>>>>> "Andy" == Andy Moreton writes: >> >> Andy> I think the following patch fixes the issues in CCL (compiler, >> Andy> interpreter and disassembler). It truncates the compiled CCL code words >> Andy> to 28 bits and then sign extends to ensure that the interpreter sees >> Andy> signed values of constants (stored at the upper end of the code word). >> >> Would you mind pushing this to the bignum branch? >> If it's inconvenient, let me know and I will do it. > > I've done some more testing with the CCl program in the midi-kbd ELPA > package, and that shows that the patch is not correct. > > I'll report back when I get it working on master and on the bignum > branch. The problems I reported with markers make debugging awkward on > the bignum branch. After a lot more testing, I have a somewhat scruffy patch that works in the following emacs builds on unpatched master, and on patched bignum branch: - cygwin 64bit (LP64 model) - mingw64 msys2 32bit - mingw64 msys2 64bit (LLP64 model) The patch contains changes for: - fix CCL to ensure it uses 28biut codewords properly in bignum build - ensure make_number creates fixnums in LLP64 builds - fix bugnumcompare for LLP64 builds - fix arith_driver to handle markers correctly - fix arith_driver operations for LLP64 builds (more testing needed) - fix float_arith_driver to allow bignums - fix ash_lsh_impl to produce correct results in bignum build - fix NUMBERP to remove redundant BIGNUMP test (ensured by INTEGERP) The patch has been tested with the attached ccl-tests.el ERT tests to check that ash/lsh shifts behave properly, and that the CCL machinery uses its 28bit codewords correctly in a bignum build. Please check this works for you, and feel free to commit it to the bignum branch. AndyM