summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-10-21scratch arena reset has to happen in parse_proc, not parse_blockWormHeamer
2025-10-21almost there...WormHeamer
2025-09-02begin work on tracking scope changes instead of mergingWormHeamer
2025-08-31thoughts about arenasWormHeamer
2025-08-30separate IR graph parts of Proc into a Graph structWormHeamer
2025-08-30fix clang unsequenced warningWormHeamer
2025-08-30old, new -> oldsz, newszWormHeamer
2025-08-30add xar.hWormHeamer
2025-08-27add scratch arena to ProcWormHeamer
2025-08-22bitshift zero peepholes, recognize known (a = b) <> (a <> b) etcWormHeamer
2025-08-11replace separate type checks with non-NULL parse_expr twantWormHeamer
2025-08-10it's commutative, not communativeWormHeamer
2025-08-10add idempotent optimizationsWormHeamer
2025-08-10idempotent operation (& and |) peepholesWormHeamer
2025-08-10remove some debug printfsWormHeamer
2025-08-10add peephole op(op(X,Y) | op(Y,X), X) -> op(op(X, X), Y)WormHeamer
2025-08-10allow func foo T {}WormHeamer
2025-08-10specify that < and > are incompatible with =WormHeamer
2025-08-10reenable region peepholesWormHeamer
2025-08-10better error reporting around uninitialized valuesWormHeamer
2025-08-10fix peephole bug (communative(phi(a,b), phi(a,b)) =/= communative(a,b))WormHeamer
2025-08-10add type-specifiers to let, N_UNINIT for uninitialized valuesWormHeamer
2025-08-10thinking about known-relationsWormHeamer
2025-08-10remove some commented out code, unused varWormHeamer
2025-08-10convert node_op_* to just NodeMask #definesWormHeamer
2025-08-10separate peephole optimization outWormHeamer
2025-08-09add N_DEAD node type, and assert to help prevent use-after-freeWormHeamer
2025-08-08slightly tweak node_set_inWormHeamer
2025-08-08attempt at optimizing regions after graph generation....WormHeamer
2025-08-08rework some stuff, maybe bugfix, loosen associative typecheckingWormHeamer
2025-08-08some comments &cWormHeamer
2025-08-07hopefully make multiple returns form sensible graphsWormHeamer
2025-08-07i thiiiink if statement peepholes work now?WormHeamer
2025-08-07fix region nodes being culled prematurelyWormHeamer
2025-08-07preliminary peephole optimization of if statementsWormHeamer
2025-08-07no_opt = 0WormHeamer
2025-08-07add if statementsWormHeamer
2025-08-05more goalsWormHeamer
2025-08-05write some stuff about language goalsWormHeamer
2025-08-05more convenience macrosWormHeamer
2025-08-05fix params being pushed in reverse orderWormHeamer
2025-08-05cmp(a - b, b - a) -> cmp(a, b) [dubious]WormHeamer
2025-08-05add a bunch of rules to simplify comparisonsWormHeamer
2025-08-05test upWormHeamer
2025-08-05add N_NONEWormHeamer
2025-08-05better node_equiv for associative ops; not(cmp(a,b)) -> oppcmp(a,b)WormHeamer
2025-08-05convert divisions to right-shiftsWormHeamer
2025-08-05correction! equality is communative, but not _associative_WormHeamer
so constants can still be shuffled from left to right, not(X) from right to left, but the regrouping optimizations don't apply
2025-08-05tragic realization: = and <> aren't communative at allWormHeamer
i assumed they were because it kinda makes sense to write something like "a = b = c", but "a = (b = c)" and "(a = b) = c" are very very different expressions. whoops!
2025-08-05allow `proc main(a, b, c i64)` and suchWormHeamer