ack.git
5 years agoFix compilation issue on C90 compilers (gcc 4.8 was failing to compile with default...
carl [Tue, 12 Feb 2019 16:17:45 +0000 (00:17 +0800)]
Fix compilation issue on C90 compilers (gcc 4.8 was failing to compile with default flags) - updated following comment.

5 years agoReplace the non-working Z80 style signed comparison sign adjustment with
David Given [Tue, 12 Feb 2019 10:57:37 +0000 (11:57 +0100)]
Replace the non-working Z80 style signed comparison sign adjustment with
something which actually works on the 8080. Sadly, Star Trek is up to
40243 bytes again.

5 years agoMerge pull request #156 from davidgiven/dtrg-arraysizes
David Given [Mon, 11 Feb 2019 20:35:16 +0000 (21:35 +0100)]
Merge pull request #156 from davidgiven/dtrg-arraysizes

i80: add 8085 instruction support

5 years agoApply Alan Cox's patch to add the 8085 extended instructions to the i80
David Given [Mon, 11 Feb 2019 20:14:35 +0000 (21:14 +0100)]
Apply Alan Cox's patch to add the 8085 extended instructions to the i80
assembler.

5 years agoMerge pull request #155 from davidgiven/dtrg-arraysizes
David Given [Mon, 11 Feb 2019 20:09:52 +0000 (21:09 +0100)]
Merge pull request #155 from davidgiven/dtrg-arraysizes

i80: fix signed comparisons

5 years agoSigned comparisons now work correctly; sadly, Star Trek increases from 39656 to
David Given [Mon, 11 Feb 2019 19:46:06 +0000 (20:46 +0100)]
Signed comparisons now work correctly; sadly, Star Trek increases from 39656 to
39726 bytes. Note that the emulator doesn't set P/V correctly and all the tests
fail. Testing in z80ex works fine.

5 years agoFix compilation issue on C90 compilers (gcc 4.8 was failing to compile with default...
carl [Mon, 11 Feb 2019 16:46:09 +0000 (00:46 +0800)]
Fix compilation issue on C90 compilers (gcc 4.8 was failing to compile with default flags).

5 years agoMerge from default.
David Given [Sun, 10 Feb 2019 22:40:07 +0000 (23:40 +0100)]
Merge from default.

5 years agoAdd tests for simple comparisons (which i80 fails).
David Given [Sun, 10 Feb 2019 22:39:15 +0000 (23:39 +0100)]
Add tests for simple comparisons (which i80 fails).

5 years agoMerge pull request #153 from davidgiven/dtrg-i80
David Given [Sun, 10 Feb 2019 18:45:00 +0000 (19:45 +0100)]
Merge pull request #153 from davidgiven/dtrg-i80

i80: more code generator improvements

5 years agoImprove subtractions, using dad and inline constants where possible. Shrinks
David Given [Sun, 10 Feb 2019 18:40:48 +0000 (19:40 +0100)]
Improve subtractions, using dad and inline constants where possible. Shrinks
Star Trek from 39740 to 39656 bytes.

5 years agoSimplify simple comparisons and use inlie constants where possible. Reduces
David Given [Sun, 10 Feb 2019 18:22:43 +0000 (19:22 +0100)]
Simplify simple comparisons and use inlie constants where possible. Reduces
Star Trek from 39771 to 39740 bytes.

5 years agoUse pop rather than inx;inx to retract the stack; consumes a register but
David Given [Sun, 10 Feb 2019 17:57:20 +0000 (18:57 +0100)]
Use pop rather than inx;inx to retract the stack; consumes a register but
halves the number of calls. Reduces Star Trek from 39976 to 39771 bytes.

5 years agoTeach the i80 code generator how to do left shifts by using dad hl; prevents it
David Given [Sun, 10 Feb 2019 17:44:47 +0000 (18:44 +0100)]
Teach the i80 code generator how to do left shifts by using dad hl; prevents it
from calling out to .sli2 for simple shifts. Shrinks Star Trek from 40055 bytes
to 39976.

5 years agoMerge pull request #152 from davidgiven/dtrg-osx
David Given [Sun, 10 Feb 2019 15:40:16 +0000 (16:40 +0100)]
Merge pull request #152 from davidgiven/dtrg-osx

Enable OSX builds again.

5 years agoReplace mkstemp() with the more modern and safer and simpler tmpfile().
David Given [Sun, 10 Feb 2019 13:36:15 +0000 (14:36 +0100)]
Replace mkstemp() with the more modern and safer and simpler tmpfile().

5 years agofreopen() appears to be problematic on OSX; as it's only ever used to rewind
David Given [Sun, 10 Feb 2019 13:32:17 +0000 (14:32 +0100)]
freopen() appears to be problematic on OSX; as it's only ever used to rewind
files, replace with rewind().

5 years agoBetter error reporting.
David Given [Sun, 10 Feb 2019 13:19:18 +0000 (14:19 +0100)]
Better error reporting.

5 years agoMore common symbol removal.
David Given [Sun, 10 Feb 2019 13:09:52 +0000 (14:09 +0100)]
More common symbol removal.

5 years agoMore common symbol fixing.
David Given [Sun, 10 Feb 2019 13:03:55 +0000 (14:03 +0100)]
More common symbol fixing.

5 years agoRemoved a whole bunch of old strcpy() prototypes in favour of <string.h>.
David Given [Sun, 10 Feb 2019 12:20:04 +0000 (13:20 +0100)]
Removed a whole bunch of old strcpy() prototypes in favour of <string.h>.

5 years agoSecond try at removing common symbols.
David Given [Sun, 10 Feb 2019 12:11:03 +0000 (13:11 +0100)]
Second try at removing common symbols.

5 years agoChange the way external symbols are defined to avoid COMMON symbols, which
David Given [Sun, 10 Feb 2019 11:57:22 +0000 (12:57 +0100)]
Change the way external symbols are defined to avoid COMMON symbols, which
don't work on OSX very well.

5 years agoAdd stray header.
David Given [Sun, 10 Feb 2019 11:57:00 +0000 (12:57 +0100)]
Add stray header.

5 years agoRemember that we need to update the generated file in LLgen, as it's not
David Given [Sun, 10 Feb 2019 11:38:33 +0000 (12:38 +0100)]
Remember that we need to update the generated file in LLgen, as it's not
self-bootstrapping...

5 years agoWe don't need depth 10 in the travis checkout.
David Given [Sun, 10 Feb 2019 11:35:18 +0000 (12:35 +0100)]
We don't need depth 10 in the travis checkout.

5 years agoDon't prototype strcpy as it makes OSX sad.
David Given [Sun, 10 Feb 2019 11:28:42 +0000 (12:28 +0100)]
Don't prototype strcpy as it makes OSX sad.

5 years agoMerge from default.
David Given [Sun, 10 Feb 2019 11:22:59 +0000 (12:22 +0100)]
Merge from default.

5 years agoAdd missing header.
David Given [Sat, 9 Feb 2019 23:45:09 +0000 (00:45 +0100)]
Add missing header.

5 years agoMerge pull request #150 from davidgiven/dtrg-windows
David Given [Sat, 9 Feb 2019 16:43:19 +0000 (17:43 +0100)]
Merge pull request #150 from davidgiven/dtrg-windows

Don't run the floating point tests on i80.

5 years agoDon't run the floating point tests on i80.
David Given [Sat, 9 Feb 2019 13:24:31 +0000 (14:24 +0100)]
Don't run the floating point tests on i80.

5 years agoMerge pull request #148 from davidgiven/dtrg-windows
David Given [Sat, 9 Feb 2019 13:15:38 +0000 (14:15 +0100)]
Merge pull request #148 from davidgiven/dtrg-windows

Make the ACK build on Windows again.

5 years agoDon't run the tests in Appveyor.
David Given [Sat, 9 Feb 2019 12:59:37 +0000 (13:59 +0100)]
Don't run the tests in Appveyor.

5 years agoMore z80ex removal.
David Given [Sat, 9 Feb 2019 12:42:09 +0000 (13:42 +0100)]
More z80ex removal.

5 years agoMerge pull request #149 from davidgiven/dtrg-arraysizes
David Given [Sat, 9 Feb 2019 12:40:36 +0000 (13:40 +0100)]
Merge pull request #149 from davidgiven/dtrg-arraysizes

i80: more code size improvements.

5 years agoRemove stray z80ex reference.
David Given [Sat, 9 Feb 2019 12:30:29 +0000 (13:30 +0100)]
Remove stray z80ex reference.

5 years agoAdd rst 3 to get the address of a frame variable; lots of rule overhaulage.
David Given [Sat, 9 Feb 2019 12:29:41 +0000 (13:29 +0100)]
Add rst 3 to get the address of a frame variable; lots of rule overhaulage.
Reduces Star Trek from 41821 to 41055 bytes.

5 years agoUgh, typo fix.
David Given [Sat, 9 Feb 2019 11:25:27 +0000 (12:25 +0100)]
Ugh, typo fix.

5 years agoMaybe the setup script is somewhere else?
David Given [Sat, 9 Feb 2019 11:23:42 +0000 (12:23 +0100)]
Maybe the setup script is somewhere else?

5 years agoTry to install cygwin packages.
David Given [Sat, 9 Feb 2019 11:17:57 +0000 (12:17 +0100)]
Try to install cygwin packages.

5 years agoAnother try at an AppVeyor build script.
David Given [Sat, 9 Feb 2019 11:04:42 +0000 (12:04 +0100)]
Another try at an AppVeyor build script.

5 years agoAdd experimental appveyor file.
David Given [Fri, 8 Feb 2019 23:07:33 +0000 (00:07 +0100)]
Add experimental appveyor file.

5 years agoRename all files called 'aux.*' to something else; Windows can't handle them.
David Given [Fri, 8 Feb 2019 23:02:41 +0000 (00:02 +0100)]
Rename all files called 'aux.*' to something else; Windows can't handle them.

5 years agoMerge pull request #147 from davidgiven/dtrg-arraysizes
David Given [Fri, 8 Feb 2019 22:19:08 +0000 (23:19 +0100)]
Merge pull request #147 from davidgiven/dtrg-arraysizes

i80: better and, or, xor, sign extension code.

5 years agoMake sign extension much less horrible.
David Given [Fri, 8 Feb 2019 22:16:57 +0000 (23:16 +0100)]
Make sign extension much less horrible.

5 years agoAdd tests for simple and, or, and xor; drastically improve the i80 code
David Given [Fri, 8 Feb 2019 21:38:07 +0000 (22:38 +0100)]
Add tests for simple and, or, and xor; drastically improve the i80 code
generation for these.

5 years agoMerge pull request #145 from davidgiven/dtrg-arraysizes
David Given [Fri, 8 Feb 2019 20:53:56 +0000 (21:53 +0100)]
Merge pull request #145 from davidgiven/dtrg-arraysizes

Experimentally use rst 1 to optimise frame variable loads.

5 years agoCP/M sbrk now handles overflow correctly.
David Given [Fri, 8 Feb 2019 20:43:52 +0000 (21:43 +0100)]
CP/M sbrk now handles overflow correctly.

5 years agoSomehow the implementation of rst 2 got lost, with hilarious results. Also fix
David Given [Fri, 8 Feb 2019 20:35:14 +0000 (21:35 +0100)]
Somehow the implementation of rst 2 got lost, with hilarious results. Also fix
some register corruption issues (I hope).

5 years agoAdd a 'disassemble' command to the CP/M emulator.
David Given [Fri, 8 Feb 2019 19:54:44 +0000 (20:54 +0100)]
Add a 'disassemble' command to the CP/M emulator.

5 years agoFix swapped bytes in probyte which was causing junk stack frames.
David Given [Fri, 8 Feb 2019 07:09:55 +0000 (08:09 +0100)]
Fix swapped bytes in probyte which was causing junk stack frames.

5 years agoMerge from default.
David Given [Thu, 7 Feb 2019 22:45:47 +0000 (23:45 +0100)]
Merge from default.

5 years agoMerge pull request #146 from davidgiven/dtrg-cpmemu
David Given [Thu, 7 Feb 2019 22:45:08 +0000 (23:45 +0100)]
Merge pull request #146 from davidgiven/dtrg-cpmemu

Add a CP/M i80 emulator, and enable the cpm tests

5 years agoBuild the CP/M tests (which got turned off accidentally). Add a disassembler to
David Given [Thu, 7 Feb 2019 22:36:45 +0000 (23:36 +0100)]
Build the CP/M tests (which got turned off accidentally). Add a disassembler to
the emulator debugger.

5 years agoAdd missing file.
David Given [Thu, 7 Feb 2019 22:01:10 +0000 (23:01 +0100)]
Add missing file.

5 years agoAdd the cpm emulator from Cowgol, modified to work with an 8080 emulator rather
David Given [Thu, 7 Feb 2019 21:39:57 +0000 (22:39 +0100)]
Add the cpm emulator from Cowgol, modified to work with an 8080 emulator rather
than libz80ex; enable tests for cpm.

5 years agoAdd rst 1 to store frame variables. Reduces Star Trek from 42339 to 41821
David Given [Thu, 7 Feb 2019 08:31:38 +0000 (09:31 +0100)]
Add rst 1 to store frame variables. Reduces Star Trek from 42339 to 41821
bytes.

5 years agoFix warnings.
David Given [Thu, 7 Feb 2019 08:09:31 +0000 (09:09 +0100)]
Fix warnings.

5 years agorst 1 now takes an eight-bit parameter, not a 16 bit one. Reduces Star Trek
David Given [Thu, 7 Feb 2019 07:45:20 +0000 (08:45 +0100)]
rst 1 now takes an eight-bit parameter, not a 16 bit one. Reduces Star Trek
again from 43205 to 42339 bytes.

5 years agoExperimentally use rst 1 to optimise frame variable loads. Reduces Star Trek
David Given [Wed, 6 Feb 2019 23:06:32 +0000 (00:06 +0100)]
Experimentally use rst 1 to optimise frame variable loads. Reduces Star Trek
from 43892 to 43205 bytes.

5 years agoMerge pull request #144 from davidgiven/dtrg-arraysizes
David Given [Wed, 6 Feb 2019 20:31:29 +0000 (21:31 +0100)]
Merge pull request #144 from davidgiven/dtrg-arraysizes

i80: use a helper function for cai.

5 years agoUse a helper function for cai --- only saves two bytes per invocation, but is
David Given [Wed, 6 Feb 2019 19:36:23 +0000 (20:36 +0100)]
Use a helper function for cai --- only saves two bytes per invocation, but is
much less embarassing.

5 years agoMerge pull request #142 from davidgiven/dtrg-arraysizes
David Given [Wed, 6 Feb 2019 15:15:53 +0000 (16:15 +0100)]
Merge pull request #142 from davidgiven/dtrg-arraysizes

i80: factor out function prologue boilerplate

5 years agoCommon out boilerplate function prologue code; shrinks Star Trek from 44256 to
David Given [Wed, 6 Feb 2019 15:06:07 +0000 (16:06 +0100)]
Common out boilerplate function prologue code; shrinks Star Trek from 44256 to
43892 bytes.

5 years agoRun through clang-format before editing.
David Given [Wed, 6 Feb 2019 10:50:05 +0000 (11:50 +0100)]
Run through clang-format before editing.

5 years agoMerge pull request #141 from davidgiven/dtrg-stray
David Given [Wed, 6 Feb 2019 10:30:56 +0000 (11:30 +0100)]
Merge pull request #141 from davidgiven/dtrg-stray

Install the cpp.ansi man page.

5 years agoMerge pull request #140 from davidgiven/dtrg-arraysizes
David Given [Wed, 6 Feb 2019 07:43:16 +0000 (07:43 +0000)]
Merge pull request #140 from davidgiven/dtrg-arraysizes

CPM: Move the standard ret boilerplate into a helper procedure.

5 years agoMove the standard ret boilerplate into a helper procedure, to save a little
David Given [Wed, 6 Feb 2019 07:08:11 +0000 (08:08 +0100)]
Move the standard ret boilerplate into a helper procedure, to save a little
space.

5 years agoInstall the cpp.ansi man page. #82.
David Given [Sat, 22 Dec 2018 22:47:49 +0000 (23:47 +0100)]
Install the cpp.ansi man page. #82.

5 years agoMerge pull request #136 from kernigh/kernigh-led-malloc
David Given [Tue, 20 Nov 2018 09:52:44 +0000 (10:52 +0100)]
Merge pull request #136 from kernigh/kernigh-led-malloc

Fewer calls to brk() and sbrk()

5 years agoRemove code to calculate memory usage with sbrk().
George Koehler [Wed, 14 Nov 2018 21:13:54 +0000 (16:13 -0500)]
Remove code to calculate memory usage with sbrk().

In many systems, malloc() can allocate outside the brk area.  The
calculation with sbrk() misses those allocations.  When LLgen or ncgg
reported the memory usage, the value was probably too low.

5 years agoSwitch led to malloc() and realloc().
George Koehler [Tue, 13 Nov 2018 23:05:16 +0000 (18:05 -0500)]
Switch led to malloc() and realloc().

Add USEMALLOC and enable it by default.  You can switch back to brk()
by removing `#define USEMALLOC` in memory.c.

USEMALLOC tells the allocator to use malloc() and realloc(), not
brk().  This might help systems where brk() doesn't work, or where
malloc() can allocate outside the brk area.

My build shows no changes in share/ack/examples (except hilo_bas.*).

5 years agoFix em_led -u name when memory allocator moves ALLOMODL.
George Koehler [Tue, 13 Nov 2018 03:46:26 +0000 (22:46 -0500)]
Fix em_led -u name when memory allocator moves ALLOMODL.

Option -u was passing an offset from modulptr(0) in ALLOMODL to the
string in argv.  If entername() would move ALLOMODL to make room in
ALLOGCHR, then the offset would become invalid, so the string would
get lost.  This fix copies the string into ALLOMODL.

This was often not a problem because the initial size of ALLOGCHR in
mach.h is probably large enough for -u.  This became a problem when I
caused the initial allocations to fail, and then only because the B
runtime uses -u.

5 years agoSwitch from long to size_t when allocating memory.
George Koehler [Mon, 12 Nov 2018 03:51:17 +0000 (22:51 -0500)]
Switch from long to size_t when allocating memory.

Also move the declarations of `incore` and `core_alloc` to "memory.h".
Also correct SYMDEBUG to SYMDBUG.  (I don't know if SYMDBUG works
because our build system never defines it.)

ind_t becomes an alias of size_t.  ind_t becomes unsigned, so I edit
some code that was using negative ind_t.  Some casts disappear, like
(long)sizeof(...) because the size is already a size_t.  There are
changes to overflow checks.  Callers with a size too big for size_t
must check it before calling the memory allocator.  An overflow check
of BASE + incr in memory.c sbreak() now happens on all platforms, not
only when a pointer is smaller than a long.

My build shows no changes in share/ack/examples (except hilo_bas.*
changing with every build).

5 years agoMerge pull request #135 from kernigh/kernigh-mv-int
David Given [Mon, 5 Nov 2018 20:48:17 +0000 (21:48 +0100)]
Merge pull request #135 from kernigh/kernigh-mv-int

Move int to $(INSDIR)/bin/int

5 years agoMove int to $(INSDIR)/bin/int
George Koehler [Mon, 5 Nov 2018 20:14:29 +0000 (15:14 -0500)]
Move int to $(INSDIR)/bin/int

If $(INSDIR)/bin is in PATH, then the user can run both ack(1) and
int(1), like

    $ ack -mem22 -o prog prog.c
    $ int prog

5 years agoMerge pull request #133 from davidgiven/dtrg-mips
David Given [Sat, 22 Sep 2018 15:30:52 +0000 (17:30 +0200)]
Merge pull request #133 from davidgiven/dtrg-mips

Allow constants >INT_MAX in mcg

5 years agoWhen parsing constants which don't fit into an arith, handle overflow properly dtrg-mips
David Given [Sat, 22 Sep 2018 10:45:59 +0000 (12:45 +0200)]
When parsing constants which don't fit into an arith, handle overflow properly
(and don't turn them all into INT_MAX...).

5 years agoMerge pull request #132 from davidgiven/dtrg-mips
David Given [Sat, 22 Sep 2018 10:04:13 +0000 (11:04 +0100)]
Merge pull request #132 from davidgiven/dtrg-mips

Teach mcg how to merge pushes

5 years agoTeach the code generator about the zero register and how to efficiently access
David Given [Sat, 22 Sep 2018 09:49:13 +0000 (11:49 +0200)]
Teach the code generator about the zero register and how to efficiently access
the stack.

5 years agoTake hreg aliases into account when finding evicted registers and performing
David Given [Sat, 22 Sep 2018 09:19:50 +0000 (11:19 +0200)]
Take hreg aliases into account when finding evicted registers and performing
the register shuffle dance.

5 years agoAdd the OPTIONS clause to the mcgg grammar; add an optional pass which converts
David Given [Sat, 22 Sep 2018 09:19:00 +0000 (11:19 +0200)]
Add the OPTIONS clause to the mcgg grammar; add an optional pass which converts
sequences of PUSHes to a single STACKADJUST followed by STOREs. This should
dramatically improve code on stack-unfriendly architectures like MIPS.

5 years agoMerge pull request #131 from davidgiven/dtrg-mips
David Given [Thu, 20 Sep 2018 22:05:55 +0000 (23:05 +0100)]
Merge pull request #131 from davidgiven/dtrg-mips

Add an mcg-based MIPS code generator.

5 years agoRemove some old, hopefully unused PowerPC code. Teach the code generator about
David Given [Thu, 20 Sep 2018 21:30:38 +0000 (23:30 +0200)]
Remove some old, hopefully unused PowerPC code. Teach the code generator about
non-volatile long registers.

5 years agoFix subtle register corruption bug where aliases weren't taken into account
David Given [Thu, 20 Sep 2018 21:24:46 +0000 (23:24 +0200)]
Fix subtle register corruption bug where aliases weren't taken into account
when assigning input registers to phis, which could cause the same hreg to be
assigned to two vregs of different types. Also improve tracing.

5 years agoCreate correctly sized csa descriptors in the Basic compiler.
David Given [Wed, 19 Sep 2018 22:49:31 +0000 (00:49 +0200)]
Create correctly sized csa descriptors in the Basic compiler.

5 years agoA few more minor optimisations.
David Given [Wed, 19 Sep 2018 22:39:13 +0000 (00:39 +0200)]
A few more minor optimisations.

5 years agoThe approach I was taking to csa and csb turns out not to work --- critical
David Given [Wed, 19 Sep 2018 22:12:03 +0000 (00:12 +0200)]
The approach I was taking to csa and csb turns out not to work --- critical
edge splitting can cause new basic blocks to be added to the graph, but while
the graph itself gets properly rewritten the descriptor tables can't be updated
to take these into account, so they end up pointing at the wrong blocks. This
causes really hard-to-debug problems.

The new approach is to parse the descriptor blocks and then generate a
comparison chain. Brute force, but much easier for the compiler to reason
about.

5 years agoFix incorrect ori encoding.
David Given [Wed, 19 Sep 2018 22:06:26 +0000 (00:06 +0200)]
Fix incorrect ori encoding.

5 years agoRemember to save longs and doubles. Yikes.
David Given [Tue, 18 Sep 2018 22:09:50 +0000 (00:09 +0200)]
Remember to save longs and doubles. Yikes.

5 years agoUpdated READMEs with the MIPS platform.
David Given [Tue, 18 Sep 2018 21:49:31 +0000 (23:49 +0200)]
Updated READMEs with the MIPS platform.

5 years agoMake the MIPS boot code produce correct code.
David Given [Tue, 18 Sep 2018 21:39:04 +0000 (23:39 +0200)]
Make the MIPS boot code produce correct code.

5 years agoLoads and stores (except longs, which are difficult) are now loaded with two
David Given [Tue, 18 Sep 2018 21:38:37 +0000 (23:38 +0200)]
Loads and stores (except longs, which are difficult) are now loaded with two
instructions rather than three.

5 years agoFixed some bad mcg ir code generation: only nodes which have been appendir'd
David Given [Tue, 18 Sep 2018 21:32:53 +0000 (23:32 +0200)]
Fixed some bad mcg ir code generation: only nodes which have been appendir'd
may be used multiple times.

5 years agoAdd unsigned comparison rules.
David Given [Mon, 17 Sep 2018 22:19:40 +0000 (00:19 +0200)]
Add unsigned comparison rules.

5 years agoAdd extern declaration which I forget to check in.
David Given [Mon, 17 Sep 2018 21:59:49 +0000 (23:59 +0200)]
Add extern declaration which I forget to check in.

5 years agoAdd specialist rules for signed integer comparisons; much better code.
David Given [Mon, 17 Sep 2018 21:53:18 +0000 (23:53 +0200)]
Add specialist rules for signed integer comparisons; much better code.

5 years agoArray descriptor ranges are inclusive; adjust aar and the tests to check for
David Given [Mon, 17 Sep 2018 18:34:38 +0000 (19:34 +0100)]
Array descriptor ranges are inclusive; adjust aar and the tests to check for
this. All the tests except rotate build now!

5 years agoFix lar and sar, which were horribly, horribly broken. Add tests.
David Given [Mon, 17 Sep 2018 17:44:17 +0000 (18:44 +0100)]
Fix lar and sar, which were horribly, horribly broken. Add tests.

5 years agoFix aar; add test.
David Given [Mon, 17 Sep 2018 15:59:45 +0000 (16:59 +0100)]
Fix aar; add test.