ack/mach/proto/mcg
David Given ac856f3b09 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.
2018-09-20 00:12:03 +02:00
..
basicblock.c Mangle label names (turns out that the ACK assembler can't really cope with 2016-10-27 23:17:16 +02:00
basicblock.h A bb's regsin are no longer the same as those of its first instruction; 2016-11-16 20:52:15 +01:00
build.lua mcg now uses dataf4 and dataf8 to emit floating point constants, and so doesn't 2018-09-12 23:19:32 +02:00
data.c The approach I was taking to csa and csb turns out not to work --- critical 2018-09-20 00:12:03 +02:00
graph.c Stop passing proc around, and use a global instead --- much cleaner. 2016-10-15 23:19:44 +02:00
graph.h Stop passing proc around, and use a global instead --- much cleaner. 2016-10-15 23:19:44 +02:00
hop.c Rework the way stack frames are laid out to be simpler and, hopefully, more 2016-11-11 21:17:45 +01:00
hop.h Add support for preserved registers. 2016-10-29 20:22:44 +02:00
ir.c Re-re-add the type inference layer, now I know more about how things work. 2016-10-22 23:04:13 +02:00
ir.h Re-re-add the type inference layer, now I know more about how things work. 2016-10-22 23:04:13 +02:00
main.c Don't use '-' in option string to getopt(). 2018-02-05 14:55:10 -05:00
mcg.h mcg now uses dataf4 and dataf8 to emit floating point constants, and so doesn't 2018-09-12 23:19:32 +02:00
mcgg_generated_footer.h Made sure that all files end in vim magic. 2016-10-05 21:07:29 +02:00
mcgg_generated_header.h Add extern declaration which I forget to check in. 2018-09-17 23:59:49 +02:00
parse_em.c The approach I was taking to csa and csb turns out not to work --- critical 2018-09-20 00:12:03 +02:00
pass_convertstackops.c Don't generate phis if unnecessary (because this breaks the 2016-10-29 10:55:48 +02:00
pass_eliminatetrivialblocks.c Stop passing proc around, and use a global instead --- much cleaner. 2016-10-15 23:19:44 +02:00
pass_groupirs.c Stop passing proc around, and use a global instead --- much cleaner. 2016-10-15 23:19:44 +02:00
pass_instructionselection.c Add support for preserved registers. 2016-10-29 20:22:44 +02:00
pass_livevreganalysis.c Lots more opcodes. Rearrange the stack layout so that fp->ab is a fixed value 2016-10-29 11:57:56 +02:00
pass_phigroups.c Precisely one stack hreg gets allocated for each vreg/congruence group for 2018-09-08 18:59:55 +02:00
pass_prologueepilogue.c Lots more opcodes; better eviction behaviour; better register moves. Lots more 2016-10-19 23:29:05 +02:00
pass_registerallocator.c Precisely one stack hreg gets allocated for each vreg/congruence group for 2018-09-08 18:59:55 +02:00
pass_removedeadblocks.c Stop passing proc around, and use a global instead --- much cleaner. 2016-10-15 23:19:44 +02:00
pass_removedeadphis.c Add code to remove unused phis, converting to pruned SSA form, to avoid 2016-10-12 21:50:12 +02:00
pass_returnvalues.c Lots more opcodes. Rearrange the stack layout so that fp->ab is a fixed value 2016-10-29 11:57:56 +02:00
pass_splitcriticaledges.c Stop passing proc around, and use a global instead --- much cleaner. 2016-10-15 23:19:44 +02:00
pass_ssa.c Fix bug where some phis weren't being inserted when a given variable definition 2016-10-27 21:40:25 +02:00
pass_typeinference.c Lots more opcodes. Rearrange the stack layout so that fp->ab is a fixed value 2016-10-29 11:57:56 +02:00
predicates.c Add specialist rules for signed integer comparisons; much better code. 2018-09-17 23:53:18 +02:00
procedure.c Fix a few c11isms. 2016-10-30 16:51:06 +01:00
procedure.h Rework the way stack frames are laid out to be simpler and, hopefully, more 2016-11-11 21:17:45 +01:00
reg.c Remove the bytes1, bytes2, bytes4, bytes8 attributes; remove the concept of a 2016-10-25 23:04:20 +02:00
reg.h Precisely one stack hreg gets allocated for each vreg/congruence group for 2018-09-08 18:59:55 +02:00
symbol.c Properly export symbols. 2016-10-29 23:52:17 +02:00
treebuilder.c The approach I was taking to csa and csb turns out not to work --- critical 2018-09-20 00:12:03 +02:00