libera/#sicl - IRC Chatlog
Search
0:42:16
hayley
Control-flow and data-flow graphs. Though we've pondered the Sea of Nodes (which would be SSA without changes).
0:43:49
random-nick
the other cleavir has a different IR https://github.com/s-expressionists/Cleavir/tree/main/BIR
0:44:48
random-nick
btw, is SICL going to use that cleavir or is it going to keep the one in sicl's tree?
0:45:11
mfiano
Hmm, I guess I have some digging to do when I'm curious enough. I was just thinking about CSE with ANF today.
1:14:23
Bike
all of these IRs aren't really that different from one another. sea of nodes would actually be a little different in that it allows nodes without a sequential control flow order constraint between them
1:16:08
moon-child
I will mention: I have heard some buzz about rsvdg, which is another purely graphical ir, but it's not clear to me it provides any advantages over sea of nodes
1:17:50
mfiano
I love reading Andy's blog. I can't tell you how many times I read this single article, though it has been a long time.
1:19:34
Bike
the main thing i want to do with the IR now is come up with something less mutation based, since the inlining procedure mutilates the IR and it's been a cause of many bugs
1:20:37
Bike
sea of nodes vs anf vs cps vs whatever isn't as immediately interesting since i feel a lot of the optimization questions aren't actually super related to the format of the IR
1:21:38
Bike
BIR is nice but as far as optimizations go the "attributes" system has been way more useful just to communicate basic information like "you can optimize out unused calls to IDENTITY" or whatever, which has little to do with IR structure
1:22:20
moon-child
like phi rather than setq? Beyond that you're largely at the mercy of the source :P
1:24:40
Bike
(i should mention that BIR did facilitate karlosz's meta evaluate pass, which is what uses the attributes to do anything with calls, so BIR design is still a little important)
1:26:12
Bike
but even as far as that goes, the local calls have been pretty critical, and that's still (somewhat) independent of CPS vs whatever
1:33:09
random-nick
another interesting idea from scheme is the nanopass framework, which is used by chez scheme, and from what I understand it involves having a lot of different IRs with small passes in between
1:50:53
random-nick
I have not used it either, but from what I've read it's consists of a macro for defining IRs which lets you inherit another IR with some node types added or removed, and a macro for defining passes which are "statically typed" in what passes they accept and return, and they're defined in some form of DSL for transforming these nodes
1:52:33
random-nick
and the second macro can automatically create noop transformations for nodes shared between the input IR and the output IR
2:00:44
Bike
what does a pass consist of? can you just transform single nodes or do some kind of pattern matching on complexes of nodes
2:07:57
random-nick
from what I understand passes are based on pattern matching, where you specify patterns to match the input and then for each pattern a form to create the resulting node
3:29:43
Bike
pattern matching is something i've thought about a bit since we actually have to do graph "regexes" in cando for chemistry reasons, and i idly wonder if it could be applied to IR graphs