ack.git
7 years agoPlats which use aelflod need to depend on it.
David Given [Sat, 26 Nov 2016 11:07:08 +0000 (12:07 +0100)]
Plats which use aelflod need to depend on it.

7 years agoqmu-system-x86 isn't in Travis' repository? Let's try qemu-user.
David Given [Sat, 26 Nov 2016 11:00:59 +0000 (12:00 +0100)]
qmu-system-x86 isn't in Travis' repository? Let's try qemu-user.

7 years agoEnable tests for linux386 via qemu-i386.
David Given [Sat, 26 Nov 2016 10:58:02 +0000 (11:58 +0100)]
Enable tests for linux386 via qemu-i386.

7 years agoEnable tests for linuxppc via qemu-ppc.
David Given [Sat, 26 Nov 2016 10:56:17 +0000 (11:56 +0100)]
Enable tests for linuxppc via qemu-ppc.

7 years agoTravis only whitelists the -x86 version of qemu.
David Given [Sat, 26 Nov 2016 10:29:57 +0000 (11:29 +0100)]
Travis only whitelists the -x86 version of qemu.

7 years agoRework the tests to run on pc86; lots of test fixes for the brk() test, which
David Given [Sat, 26 Nov 2016 10:23:25 +0000 (11:23 +0100)]
Rework the tests to run on pc86; lots of test fixes for the brk() test, which
was nearly useless; lots of fixes to qemuppc and pc86 sbrk(), which was broken;
change the pc86 console to echo output to the serial port (needed for running
tests on qemu).

7 years agoRefactored the tests to make the generic across different plats.
David Given [Fri, 25 Nov 2016 20:02:51 +0000 (21:02 +0100)]
Refactored the tests to make the generic across different plats.

7 years agoMake pc86 echo console output to the serial port, so qemu can pipe it to
David Given [Fri, 25 Nov 2016 19:28:41 +0000 (20:28 +0100)]
Make pc86 echo console output to the serial port, so qemu can pipe it to
stdout.

7 years agoAnsify Paranoia, because I was getting annoyed by all the compiler warnings on
David Given [Fri, 25 Nov 2016 19:01:43 +0000 (20:01 +0100)]
Ansify Paranoia, because I was getting annoyed by all the compiler warnings on
every build.

7 years agoMerge pull request #16 from davidgiven/dtrg-pascal-mark-release
David Given [Thu, 24 Nov 2016 19:45:14 +0000 (20:45 +0100)]
Merge pull request #16 from davidgiven/dtrg-pascal-mark-release

Remove the Mark() and Release() procedures from Pascal.

7 years agoRemove the Mark() and Release() procedures from the Pascal compiler and
David Given [Thu, 24 Nov 2016 19:35:26 +0000 (20:35 +0100)]
Remove the Mark() and Release() procedures from the Pascal compiler and
standard library, because they never worked and come from an achingly old
version of the Pascal specification. Fix the implementations of New() and
Dispose() to use the standard C memory allocator rather than rolling their own
(also in C). Write test!

7 years agoForgot to check in the change to qemuppc's brk() to set errno on memory
David Given [Thu, 24 Nov 2016 18:47:11 +0000 (19:47 +0100)]
Forgot to check in the change to qemuppc's brk() to set errno on memory
allocation failure.

7 years agoMerge pull request #15 from davidgiven/dtrg-allocs
David Given [Wed, 23 Nov 2016 21:35:50 +0000 (22:35 +0100)]
Merge pull request #15 from davidgiven/dtrg-allocs

Fix various memory allocation bugs.

7 years agoAdd a test for brk() and sbrk().
David Given [Wed, 23 Nov 2016 21:28:21 +0000 (22:28 +0100)]
Add a test for brk() and sbrk().

7 years agoAdd a test for calloc().
David Given [Wed, 23 Nov 2016 21:22:04 +0000 (22:22 +0100)]
Add a test for calloc().

7 years agoImplement calloc() (accidentally got dropped with the malloc rewrite).
David Given [Wed, 23 Nov 2016 21:16:25 +0000 (22:16 +0100)]
Implement calloc() (accidentally got dropped with the malloc rewrite).

7 years agoChange sbrk() to take an int rather than an intptr_t (following the OpenBSD way
David Given [Wed, 23 Nov 2016 21:06:24 +0000 (22:06 +0100)]
Change sbrk() to take an int rather than an intptr_t (following the OpenBSD way
rather than the Linux way; various non-C bits of the ACK assume it takes an
int, so it's cleaner).

7 years agoCombine brk() with sbrk(); modify brk() to update the sbrk(0) value.
David Given [Wed, 23 Nov 2016 21:04:21 +0000 (22:04 +0100)]
Combine brk() with sbrk(); modify brk() to update the sbrk(0) value.

7 years agoMerge pull request #14 from davidgiven/dtrg-experimental-mcgg
David Given [Wed, 23 Nov 2016 20:58:31 +0000 (21:58 +0100)]
Merge pull request #14 from davidgiven/dtrg-experimental-mcgg

Merge mcg code generator to trunk

7 years agoDon't install qemu-system-ppc until openbios-ppc gets whitelisted by Travis.
David Given [Wed, 23 Nov 2016 20:53:14 +0000 (21:53 +0100)]
Don't install qemu-system-ppc until openbios-ppc gets whitelisted by Travis.

7 years agoAlso call .trp .trap, for ncg compatibility.
David Given [Sun, 20 Nov 2016 18:39:28 +0000 (19:39 +0100)]
Also call .trp .trap, for ncg compatibility.

7 years agoinn on ncg now passes the CPU tests.
David Given [Sun, 20 Nov 2016 18:35:34 +0000 (19:35 +0100)]
inn on ncg now passes the CPU tests.

7 years agoFinally fix the build system issue where ackprogram would try to explicitly
David Given [Sun, 20 Nov 2016 17:57:44 +0000 (18:57 +0100)]
Finally fix the build system issue where ackprogram would try to explicitly
link all the language libraries.

7 years agoinn works now; add a helper for it.
David Given [Sun, 20 Nov 2016 11:53:44 +0000 (12:53 +0100)]
inn works now; add a helper for it.

7 years agolxa now works, I hope; traps are better (and stubbed out on qemuppc).
David Given [Sun, 20 Nov 2016 10:57:21 +0000 (11:57 +0100)]
lxa now works, I hope; traps are better (and stubbed out on qemuppc).

7 years agoBetter handling of float conversions; more tests; converting to unsigned ints
David Given [Sun, 20 Nov 2016 10:27:40 +0000 (11:27 +0100)]
Better handling of float conversions; more tests; converting to unsigned ints
works now.

7 years agoAdd some more tests.
David Given [Sun, 20 Nov 2016 09:46:53 +0000 (10:46 +0100)]
Add some more tests.

7 years agoNo, sudo doesn't get openbios-ppc installed. I added a whitelisting request:
David Given [Sun, 20 Nov 2016 09:36:30 +0000 (10:36 +0100)]
No, sudo doesn't get openbios-ppc installed. I added a whitelisting request:

https://github.com/travis-ci/apt-package-whitelist/issues/3745

7 years agoNeed sudo to install openbios-ppc.
David Given [Sun, 20 Nov 2016 09:09:58 +0000 (10:09 +0100)]
Need sudo to install openbios-ppc.

7 years agoInstall openbios on Travis (needed by qemu-system-ppc).
David Given [Sun, 20 Nov 2016 09:00:59 +0000 (10:00 +0100)]
Install openbios on Travis (needed by qemu-system-ppc).

7 years agocif8 and cuf8 work now. More tests.
David Given [Sat, 19 Nov 2016 10:42:30 +0000 (11:42 +0100)]
cif8 and cuf8 work now. More tests.

7 years agoFloats and doubles are now written out correctly.
David Given [Sat, 19 Nov 2016 10:39:13 +0000 (11:39 +0100)]
Floats and doubles are now written out correctly.

7 years agoUse .hol0 as an additional name for hol0; mcg requires it.
David Given [Sat, 19 Nov 2016 10:09:07 +0000 (11:09 +0100)]
Use .hol0 as an additional name for hol0; mcg requires it.

7 years agoMade csa and csb work with mcg; adjust the libem functions and the
David Given [Sat, 19 Nov 2016 09:55:41 +0000 (10:55 +0100)]
Made csa and csb work with mcg; adjust the libem functions and the
corresponding invocation in the ncg table so the same helpers can be used for
both mcg and ncg. Add a new IR opcode, FARJUMP, which jumps to a helper
function but saves volatile registers.

7 years agoYet another OB1 stack format fix.
David Given [Sat, 19 Nov 2016 09:42:22 +0000 (10:42 +0100)]
Yet another OB1 stack format fix.

7 years agoBetterer timeout handling.
David Given [Thu, 17 Nov 2016 21:04:50 +0000 (22:04 +0100)]
Betterer timeout handling.

7 years agoRemember to push the result of lor onto the stack.
David Given [Thu, 17 Nov 2016 21:04:32 +0000 (22:04 +0100)]
Remember to push the result of lor onto the stack.

7 years agoNow _errsym and _erlsym are defined in the standard library, don't define them
David Given [Wed, 16 Nov 2016 20:13:00 +0000 (21:13 +0100)]
Now _errsym and _erlsym are defined in the standard library, don't define them
in the program.

7 years agoTests can now specify (via a hacky filename suffix) which runtime they want.
David Given [Wed, 16 Nov 2016 20:08:03 +0000 (21:08 +0100)]
Tests can now specify (via a hacky filename suffix) which runtime they want.

7 years agoAdd another test.
David Given [Wed, 16 Nov 2016 19:56:45 +0000 (20:56 +0100)]
Add another test.

7 years agoA bb's regsin are no longer the same as those of its first instruction;
David Given [Wed, 16 Nov 2016 19:52:15 +0000 (20:52 +0100)]
A bb's regsin are no longer the same as those of its first instruction;
occasionally the first hop of a block would try to rearrange its registers (due
to evicted throughs), resulting in the phi moves copying values into the wrong
registers.

7 years agoCleanup; the test driver is now way more robust.
David Given [Wed, 16 Nov 2016 19:50:14 +0000 (20:50 +0100)]
Cleanup; the test driver is now way more robust.

7 years agoReenable eviction of corrupted registers, which had been broken by a previous
David Given [Tue, 15 Nov 2016 20:55:10 +0000 (21:55 +0100)]
Reenable eviction of corrupted registers, which had been broken by a previous
change. Change the register move code to get swaps right, or at least righter.

7 years agoPut saved registers in *actually* the write place. I hope.
David Given [Tue, 15 Nov 2016 20:54:15 +0000 (21:54 +0100)]
Put saved registers in *actually* the write place. I hope.

7 years agoGet subtractions the right way round.
David Given [Tue, 15 Nov 2016 19:25:11 +0000 (20:25 +0100)]
Get subtractions the right way round.

7 years agoAdd a basic integer shift test.
David Given [Mon, 14 Nov 2016 21:12:13 +0000 (22:12 +0100)]
Add a basic integer shift test.

7 years agoAdd basic integer comparison test.
David Given [Mon, 14 Nov 2016 21:01:25 +0000 (22:01 +0100)]
Add basic integer comparison test.

7 years agoAllow values left on the stack at the end of the procedure (it's legal!).
David Given [Mon, 14 Nov 2016 20:47:49 +0000 (21:47 +0100)]
Allow values left on the stack at the end of the procedure (it's legal!).

7 years agoaelflod and aslod now default to not showing the memory dump. dtrg-cgen
David Given [Sun, 13 Nov 2016 19:50:23 +0000 (20:50 +0100)]
aelflod and aslod now default to not showing the memory dump.

7 years agoPrecise's qemu package is qemu-system.
David Given [Sun, 13 Nov 2016 13:20:14 +0000 (14:20 +0100)]
Precise's qemu package is qemu-system.

7 years agoTypo fix.
David Given [Sun, 13 Nov 2016 13:17:38 +0000 (14:17 +0100)]
Typo fix.

7 years agoAttempt to enable the qemuppc tests on Travis.
David Given [Sun, 13 Nov 2016 13:10:44 +0000 (14:10 +0100)]
Attempt to enable the qemuppc tests on Travis.

7 years agoFix buffer overrun: if LABEL_STARTER is seen but LABEL_TERMINATOR is not, the
David Given [Sun, 13 Nov 2016 13:04:58 +0000 (14:04 +0100)]
Fix buffer overrun: if LABEL_STARTER is seen but LABEL_TERMINATOR is not, the
label parser will keep going forever looking for the end of the label. It now
stops at the end of the string.

7 years agoAdd a rather bodged test framework for the qemuppc plat, which only runs if the
David Given [Sun, 13 Nov 2016 12:37:22 +0000 (13:37 +0100)]
Add a rather bodged test framework for the qemuppc plat, which only runs if the
qemu-system-ppc emulator is installed.

7 years agoFix (or at least, work around) an issue with library order. Make sure the Basic
David Given [Sun, 13 Nov 2016 12:28:09 +0000 (13:28 +0100)]
Fix (or at least, work around) an issue with library order. Make sure the Basic
error symbols are actually defined.

7 years agoAdd just enough Open Firmware support for an output console.
David Given [Sat, 12 Nov 2016 21:09:54 +0000 (22:09 +0100)]
Add just enough Open Firmware support for an output console.

7 years agoAdd the very experimental qemuppc plat, intended to generate minimal images
David Given [Sat, 12 Nov 2016 18:20:58 +0000 (19:20 +0100)]
Add the very experimental qemuppc plat, intended to generate minimal images
which can be emulated using qemu (for, hopefully, a test suite). Currently it
generates images which won't run because there's no RAM.

7 years agoUpdate the table to return call output values in the right registers. Fix the
David Given [Fri, 11 Nov 2016 20:48:36 +0000 (21:48 +0100)]
Update the table to return call output values in the right registers. Fix the
register allocator so the corrupted registers only apply to throughs
(otherwise, you can't put output registers in corrupted registers).

7 years agoRework the way stack frames are laid out to be simpler and, hopefully, more
David Given [Fri, 11 Nov 2016 20:17:45 +0000 (21:17 +0100)]
Rework the way stack frames are laid out to be simpler and, hopefully, more
correct. Saved registers are now placed in what may be the right place.

7 years agoMerge from default.
David Given [Fri, 11 Nov 2016 19:17:54 +0000 (20:17 +0100)]
Merge from default.

7 years agoRename addr_t to address_t to avoid clashes with the system addr_t.
David Given [Fri, 11 Nov 2016 19:17:10 +0000 (20:17 +0100)]
Rename addr_t to address_t to avoid clashes with the system addr_t.

7 years agoDisable gethostid() in the build system Lua; it's unused and doesn't work on
David Given [Fri, 11 Nov 2016 19:16:43 +0000 (20:16 +0100)]
Disable gethostid() in the build system Lua; it's unused and doesn't work on
Haiku.

7 years agoMerge.
David Given [Thu, 10 Nov 2016 21:06:08 +0000 (22:06 +0100)]
Merge.

7 years agoAdd enough return types to the K&R C that the ACK builds (on Linux) using clang
David Given [Thu, 10 Nov 2016 21:04:18 +0000 (22:04 +0100)]
Add enough return types to the K&R C that the ACK builds (on Linux) using clang
now.

7 years agoRemove sys_time in favour of directly calling time().
David Given [Wed, 9 Nov 2016 20:52:04 +0000 (21:52 +0100)]
Remove sys_time in favour of directly calling time().

7 years agoMerge pull request #9 from kernigh/fix-flt-trek
David Given [Mon, 7 Nov 2016 19:15:48 +0000 (20:15 +0100)]
Merge pull request #9 from kernigh/fix-flt-trek

fixes for floating point and startrek

7 years agoEdit startrek.c so I can compile it with gcc and OpenBSD libc.
George Koehler [Mon, 7 Nov 2016 01:21:48 +0000 (20:21 -0500)]
Edit startrek.c so I can compile it with gcc and OpenBSD libc.

Rename our getline() to get_line() to prevent a conflict with POSIX
getline() declared in stdio.h.

Remove dangerous call to gets().  OpenBSD does not have gets(), C99
deprecated it and C11 removed it.

Also change spelling "sheild" to "shield".

7 years agoConvert 1 to 1.0, not 0.0, for machines with 64-bit long.
George Koehler [Mon, 7 Nov 2016 00:34:51 +0000 (19:34 -0500)]
Convert 1 to 1.0, not 0.0, for machines with 64-bit long.

This fixes flt_arith2flt() when sizeof(arith) != 4, where arith is
long.  When cemcom.ansi sees an expression like d + 1 (where d is some
double), it calls flt_arith2flt() to convert 1 to floating-point.  On
machines where sizeof(arith) != 4, the code did n >>= 1 when n should
not have been changed.  If n was 1, then n == 0 became true.  This
caused the code to convert 1 or -1 to 0.0.

My fix assumes sizeof(arith) >= 8, so I can use n >> 32.  Machines
with sizeof(arith) of 5 to 7 would need to do (uarith)n >> 32, where
uarith must be an unsigned integer type of same size as arith.

In startrek.c, the Enterprise can now dock with a starbase.  The
compiler no longer translates s1 - 1 to s1 - 0.0 and s1 + 1 to s1 +
0.0, so the game now looks for starbases next to the Enterprise.

7 years agoRemove unused defines from lang/cem/libcc.ansi/math/localmath.h
George Koehler [Sun, 6 Nov 2016 20:49:47 +0000 (15:49 -0500)]
Remove unused defines from lang/cem/libcc.ansi/math/localmath.h

This undoes part of bfeb736, and returns to using DBL_MAX_EXP and
DBL_MIN_EXP from float.h.

Add a dependency on math/localmath.h and other local header files so
libc is rebuilt when those headers change.

7 years agoUndo commit bfeb736 for lang/cem/libcc.ansi/headers/float.h
George Koehler [Sun, 6 Nov 2016 20:01:25 +0000 (15:01 -0500)]
Undo commit bfeb736 for lang/cem/libcc.ansi/headers/float.h

This restores the correct values of DBL_MAX, DBL_MIN_EXP, and related
constants.  This fixes some range checks within libc, causing
atof("-36e90") and atof("1.44e-288") to return the correct values.

7 years agoSimplify flt_arith now that mantissa uses uint32_t.
George Koehler [Sun, 6 Nov 2016 01:29:03 +0000 (21:29 -0400)]
Simplify flt_arith now that mantissa uses uint32_t.

It seems that someone wanted to build flt_arith with a compiler that
had long but not unsigned long.  This required extra code to
accomplish unsigned right shift, unsigned division, and unsigned
comparison using the signed operations.  Now that we use uint32_t, we
can simply use the unsigned operations and remove the ucmp() function.
We have similar code in mach/proto/fp/ and in
lang/cem/libcc.ansi/stdlib/ext_comp.c where we use the unsigned
operations.

Some long variables become uint32_t, and some masks with 0xFFFFFFFF
disappear because uint32_t has only 32 bits.

Update flt_arith.3 to show that mantissa uses uint32_t.

Provide a target to install modules/src/flt_arith/test.c as flt_test
so I can run the tests.

7 years agoSwitch flt_mantissa fields from long to uint32_t.
George Koehler [Sat, 5 Nov 2016 21:00:24 +0000 (17:00 -0400)]
Switch flt_mantissa fields from long to uint32_t.

This seems to fix an error when flt_arith converts a literal
double-precision float to IEEE format.  For example, 0.5 and 0.75 got
converted to slightly below their correct values.

My host gcc for amd64 has 64-bit long, but flt_arith needs only 32
bits.  The code (at least flt_add.c) can make 32-bit overflows.  Such
overflows would set the higher bits of a 64-bit long, which might
cause problems later.

I need to use uint32_t and not int32_t because the code still uses
long, and the sign extension from int32_t to long would cause
problems.  The mantissa represents a value in [0, 2) that can't be
negative, so unsigned type is better.  Also, signed overflow is
undefined behavior in C, so flt_add.c better make overflows with
uint32_t and not int32_t.

This commit doesn't touch lang/cem/libcc.ansi/stdlib/ext_fmt.h which
continues to use unsigned long for its mantissa fields.

7 years agoAssume ANSI C in modules/src/flt_arith
George Koehler [Sat, 5 Nov 2016 20:24:18 +0000 (16:24 -0400)]
Assume ANSI C in modules/src/flt_arith

Remove the #include "ansi.h" and always use the prototypes.

7 years agoEnsure the modules properly depend on their headers.
David Given [Sat, 5 Nov 2016 10:52:54 +0000 (11:52 +0100)]
Ensure the modules properly depend on their headers.

7 years agoMerge from default.
David Given [Sat, 5 Nov 2016 10:47:53 +0000 (11:47 +0100)]
Merge from default.

7 years agoProperly declare the library headers as dependencies.
David Given [Sat, 5 Nov 2016 10:47:36 +0000 (11:47 +0100)]
Properly declare the library headers as dependencies.

7 years agoCorrectly mangle labels used in initialisers.
David Given [Mon, 31 Oct 2016 22:21:33 +0000 (23:21 +0100)]
Correctly mangle labels used in initialisers.

7 years agoTypo fix.
David Given [Mon, 31 Oct 2016 22:16:02 +0000 (23:16 +0100)]
Typo fix.

7 years agoAdd, I hope, patterns for fmsub, fnmadd, and fnmsub (also float versions).
David Given [Mon, 31 Oct 2016 21:36:54 +0000 (22:36 +0100)]
Add, I hope, patterns for fmsub, fnmadd, and fnmsub (also float versions).

7 years agoAlso use fmadd for single-precision floats.
David Given [Mon, 31 Oct 2016 18:55:16 +0000 (19:55 +0100)]
Also use fmadd for single-precision floats.

7 years agoUse fmadd for multiply-and-add instructions.
David Given [Mon, 31 Oct 2016 18:52:17 +0000 (19:52 +0100)]
Use fmadd for multiply-and-add instructions.

7 years agoFix a few c11isms.
David Given [Sun, 30 Oct 2016 15:51:06 +0000 (16:51 +0100)]
Fix a few c11isms.

7 years agoMerge from default.
David Given [Sun, 30 Oct 2016 14:59:44 +0000 (15:59 +0100)]
Merge from default.

7 years agoMerge pull request #7 from davidgiven/travis
David Given [Sun, 30 Oct 2016 14:59:04 +0000 (15:59 +0100)]
Merge pull request #7 from davidgiven/travis

Use built-in Lua rather than relying on a system one

7 years agoMerge from default. travis
David Given [Sun, 30 Oct 2016 14:53:26 +0000 (15:53 +0100)]
Merge from default.

7 years agoDon't allow parallel builds in the top-level makefile.
David Given [Sun, 30 Oct 2016 14:49:39 +0000 (15:49 +0100)]
Don't allow parallel builds in the top-level makefile.

7 years agoOld versions of make don't support -r.
David Given [Sun, 30 Oct 2016 13:28:08 +0000 (14:28 +0100)]
Old versions of make don't support -r.

7 years agoProperly export symbols.
David Given [Sat, 29 Oct 2016 21:52:17 +0000 (23:52 +0200)]
Properly export symbols.

7 years agoGet top working with the PowerPC; use it to eliminate useless branches and
David Given [Sat, 29 Oct 2016 21:37:11 +0000 (23:37 +0200)]
Get top working with the PowerPC; use it to eliminate useless branches and
moves.

7 years agoMerge from default (merging in George Koehler's PowerPC changes).
David Given [Sat, 29 Oct 2016 20:40:40 +0000 (22:40 +0200)]
Merge from default (merging in George Koehler's PowerPC changes).

7 years agoAdd support for preserved registers.
David Given [Sat, 29 Oct 2016 18:22:44 +0000 (20:22 +0200)]
Add support for preserved registers.

7 years agoMore opcodes.
David Given [Sat, 29 Oct 2016 11:32:09 +0000 (13:32 +0200)]
More opcodes.

7 years agoMore opcodes.
David Given [Sat, 29 Oct 2016 10:55:34 +0000 (12:55 +0200)]
More opcodes.

7 years agoEmit negative constants correctly.
David Given [Sat, 29 Oct 2016 10:55:21 +0000 (12:55 +0200)]
Emit negative constants correctly.

7 years agoMore opcodes. sti can now cope with non-standard sizes (really need a better
David Given [Sat, 29 Oct 2016 10:48:05 +0000 (12:48 +0200)]
More opcodes. sti can now cope with non-standard sizes (really need a better
fix for this). Hack in crude support for mismatched stack pushes and pops (ints
vs longs).

7 years agoActually, the locals need to go above the spills and saved regs, so fp == lb.
David Given [Sat, 29 Oct 2016 10:00:33 +0000 (12:00 +0200)]
Actually, the locals need to go above the spills and saved regs, so fp == lb.

7 years agoLots more opcodes. Rearrange the stack layout so that fp->ab is a fixed value
David Given [Sat, 29 Oct 2016 09:57:56 +0000 (11:57 +0200)]
Lots more opcodes. Rearrange the stack layout so that fp->ab is a fixed value
(needed for CHAINFP and FPTOAB). Wire up lfrs to calls via a phi when
necessary, to allow call-bra-lfr chains.

7 years agoDon't generate phis if unnecessary (because this breaks the
David Given [Sat, 29 Oct 2016 08:55:48 +0000 (10:55 +0200)]
Don't generate phis if unnecessary (because this breaks the
critical-edge-splitting guarantee and causes insertion of phi copies to fail).

7 years agoMangle label names (turns out that the ACK assembler can't really cope with
David Given [Thu, 27 Oct 2016 21:17:16 +0000 (23:17 +0200)]
Mangle label names (turns out that the ACK assembler can't really cope with
labels that are the same name as instructions...).

7 years agoSwaps work (at least for registers). More opcodes. Rearrange the stack layout
David Given [Thu, 27 Oct 2016 19:50:58 +0000 (21:50 +0200)]
Swaps work (at least for registers). More opcodes. Rearrange the stack layout
so we can always trivially find fp, which lets CHAINFP work.