freenode/#clasp - IRC Chatlog
Search
14:24:47
beach
Here is an interesting question: What if SC were to be reformulated to work on DU chains rather than on the raw flow graph? Would it then have the same complexity as SSC?
14:25:21
beach
I am asking because SSC is essentially that; working on the (very simple) DU chains of the SSA version of the program.
14:26:15
beach
I am pretty sure I will have the same question for CC with respect to SCC, but I don't know that for sure yet.
14:30:02
beach
I am also asking because if the S?? algorithms can be reformulated to work on arbitrary DU chains (whether from the original program or from the SSA version of it) then they would work whether the program is in SSA form or not. That would be a great advantage, because they would then work on SFA as well with its equally simple DU chains.
14:31:02
karlosz
beach: i think you are right with respect to SC and SSC. in that algorithm, SSA is only used for its DU information
14:31:38
karlosz
the not so straightforward part with the SCC algorithm into SFA is the handling of phi nodes
14:33:15
beach
Though, the time is now 16:30 on a Friday evening, and I have some house chores to do, then there is dinner, and spending time with my (admittedly small) family, so I may not finish it today. I'll read a bit more now though.
14:34:27
beach
Oh, it's a pleasure, and I need to know all these things. But, as you know, it's all about priorities. I am currently working on the SICL memory allocator and its garbage collectors.
15:34:54
beach
karlosz: I'll save SCC for tomorrow. I need to be alert when I read it. But I can already tell that it won't be hard to understand.
16:38:27
karlosz
i got self build through partial inlining. it only adds about 5 seconds to the build time
16:40:45
beach
drmeister has figured out the LLVM takes a lot of time. Maybe inlining increases the LLVM code size and maybe they have some quadratic algorithms in there. Just guessing of course.
16:41:40
karlosz
well i can imagine that LLVM code is much larger than HIR code, so it sounds like a good guess
16:43:05
Bike
the five seconds is just it checking everything for inlinability and determining there is none
16:45:26
karlosz
is there an advantage to cst+partial inlining vs ast inlining with generate-ast and then using partial inlining for local funs?
16:47:04
Bike
also lambda-converts lets, which fixes a bug relating to closure allocation extant in generate-ast, but also would cause a lot of slowdown that partial inlining is supposed to fix
16:47:18
beach
Well, the AST inlining duplicates inlining code, so I would like to get rid of it. The partial inlining has to be done anyway, so if it can handle the case that AST inlining handles now, then we can get rid of redundant code.
16:49:59
Bike
if you do (loop for i below 5 collect (let ((x i)) (lambda () x))) you'll get five functions that all return 4
17:08:09
karlosz
its kind of silly but having half the graph be nops actually slows down compile a bit
17:09:55
karlosz
thats unfortunate. there must not be many ways to get around that besides generating code yourself
17:15:18
karlosz
drmeister: code generation isn't intractable. i guess we can just point at sbcl for generating decent x86 code
17:18:27
Bike
i tried looking at the source but it was pretty confusing, like all CLOS implementations
17:20:27
Bike
it admits several optimizations that wouldn't be possible or useful for most generic functions.
17:36:16
karlosz
unfortunately i dont know how to build clisp on macos. but i think the program and isp stack are controlled by the os enviornment variables for stack size
19:13:30
Bike
drmeister: you were talking before about modifying function descriptions being a problem, because they're constant or something, right? how'd that work out?
21:08:43
copec
novice question: Does clasp have any julia interfaces? https://github.com/JuliaGL/GLVisualize.jl