index
:
~wrmr/lang
master
Unnamed repository; edit this file 'description' to name the repository.
Worm Heamer
summary
refs
log
tree
commit
diff
log msg
author
committer
range
path:
root
/
ir.c
Age
Commit message (
Collapse
)
Author
2025-10-28
speculative change to node_newv() to reduce fragmentation
WormHeamer
2025-10-27
fix a bunch of warnings
WormHeamer
2025-10-27
small size optimization on <= 1-node NodeList
WormHeamer
2025-10-27
fix node_set_in() setting always index 0
WormHeamer
2025-10-27
begin work on nodelists
WormHeamer
2025-08-30
separate IR graph parts of Proc into a Graph struct
WormHeamer
2025-08-27
add scratch arena to Proc
WormHeamer
2025-08-10
better error reporting around uninitialized values
WormHeamer
2025-08-10
fix peephole bug (communative(phi(a,b), phi(a,b)) =/= communative(a,b))
WormHeamer
2025-08-10
add type-specifiers to let, N_UNINIT for uninitialized values
WormHeamer
2025-08-10
separate peephole optimization out
WormHeamer
2025-08-09
add N_DEAD node type, and assert to help prevent use-after-free
WormHeamer
2025-08-08
slightly tweak node_set_in
WormHeamer
2025-08-08
attempt at optimizing regions after graph generation....
WormHeamer
2025-08-08
rework some stuff, maybe bugfix, loosen associative typechecking
WormHeamer
2025-08-07
hopefully make multiple returns form sensible graphs
WormHeamer
2025-08-07
i thiiiink if statement peepholes work now?
WormHeamer
2025-08-07
fix region nodes being culled prematurely
WormHeamer
2025-08-07
preliminary peephole optimization of if statements
WormHeamer
2025-08-07
add if statements
WormHeamer
2025-08-05
more convenience macros
WormHeamer
2025-08-05
cmp(a - b, b - a) -> cmp(a, b) [dubious]
WormHeamer
2025-08-05
add a bunch of rules to simplify comparisons
WormHeamer
2025-08-05
better node_equiv for associative ops; not(cmp(a,b)) -> oppcmp(a,b)
WormHeamer
2025-08-05
convert divisions to right-shifts
WormHeamer
2025-08-05
correction! 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-05
tragic realization: = and <> aren't communative at all
WormHeamer
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-05
convert a + -lit -> a - lit; some add/sub inequivalence identities
WormHeamer
2025-08-05
known-not-equivalent identities: a [+/-] lit[x, x =/= 0]
WormHeamer
2025-08-04
actually do op(not(X), Y) -> op(Y, not(X)) to avoid looping
WormHeamer
2025-08-04
shuffle communative op(not(X), Y) -> op(Y, not(X))
WormHeamer
2025-08-04
NODE_KEEP macro
WormHeamer
2025-08-04
fix bug of lhs getting culled if same node optimized out of rhs
WormHeamer
2025-08-04
make NodeInputs statically sized, peephole a + ~a and a ^ ~a
WormHeamer
2025-08-04
stuffs
WormHeamer
2025-08-04
fix communative peepholes trampling type boundaries
WormHeamer
2025-08-04
add optimizations based on only partially known values
WormHeamer
2025-08-04
use lisp acronyms to express peephole optimizations
WormHeamer
2025-08-04
another communative operator peephole
WormHeamer
2025-08-04
add projection nodes, fix peephole optimization
WormHeamer
2025-08-03
add booleans and comparison operators
WormHeamer
2025-08-03
expand and clarify type system, fix double-free of nodes
WormHeamer
2025-08-03
add assignment statements
WormHeamer
2025-08-03
factor out node stuff into ir.c & ir.h
WormHeamer