freenode/#clasp - IRC Chatlog
Search
14:53:23
Bike
no, i can get going on that in a minute. wanted to finish something else up but it'll take time
15:15:12
drmeister
Because if it's about computers - I'll join in with you for a good 'ole "two minutes hate".
15:16:11
beach
This happened when I tried to trace all the functions in the cst-to-ast package and then translate a very simple expression.
15:16:53
karlosz
well, this is asmusing. inlining out of extent returns causes them to act like scheme's indefinite extent returns introduced by call/cc
15:17:53
karlosz
and it makes sense too, if we ignore what is out of extent or not we get a valid continuation anywhere in the function body, just like scheme
15:19:17
karlosz
so when partial inlining and hitting unwind it will inline the function by unwinding
15:21:06
karlosz
right, we want to throw an error on UB behavior - but it is still amsuing that it does what scheme would do with call/ccc
15:22:33
karlosz
yes, the inline method for unwind instruction doesnt check whether the place its unwinding to is really valid
15:23:16
karlosz
and if it isn't, we can still inline the function, but we should replace the unwind instruction with an illegal unwind instruction that will throw an error when its inlined
15:25:56
beach
In SICL, I definitely want the ordinary machinery to be invoked if there is a non-local exit to an exit point that has been abandoned.
15:27:00
karlosz
so then one possible way to achieve that is to not bother inlining any function with unwind instruction in it
15:27:32
karlosz
https://paste.gnome.org/pdqwigrb2 it would mean something like this doesn't get constant folded to 24 though
15:28:34
beach
Are you sure there are only two possibilities: Never inline in that case, or do the wrong thing sometimes?
15:30:21
beach
Anyway, if you want the second option, you should make a method specialized to your system, because I do not want it for SICL.
15:31:26
karlosz
OK. i am curious how you will fix the inliner to always do the right thing though, because i would like that too
15:33:10
karlosz
sure, i was bringing it up because thats what the current code that is in the repository does
15:36:02
beach
I don't get it though. If you can detect the situation and replace the unwind with an illegal unwind instruction, how come it is not possible to avoid inlining when that situation is detected?
15:37:26
karlosz
you would have to look inside every function to see if it odes anything weird before you start the inlining process to fix it
18:20:15
frgo
Guys, where can I find a PDF detailling Cleavir? I need to read up on some of its features ...
19:43:20
Bike
ok. got a bug or something in sicl. if you run segregate-lexicals, sometimes it will want to turn a function parameter into a cell. when it does it knocks the enter-instruction's lambda-list and outputs out of sync. and i'm not sure it results in something sane, either, let me check
19:47:53
Bike
ok, the generated code is sane actually. so it's just the lambda-list/outputs mismatch.
19:51:27
karlosz
okay, thanks. how long does it take to build clasp on the hardware you have? i have a new laptop, yet i still takes about 4 hours to build clasp
20:09:40
karlosz
maybe it would help catch bugs if we had an ir consistency checker that just makes sure everything is what they should be
20:10:01
karlosz
like checking successors, inputs, using-instructions, etc... are all what they should be
20:11:34
karlosz
i can imagine a verifier for closure conversion that tests whether any location is used by a function that doesnt own it, for example
20:18:17
karlosz
yeah, it probably makes sense to program different consistency checks individually. usually they can be associated with some pass, like checking successors and predecessors agree like for cleavir-ir:set-predecessors
20:18:40
karlosz
could also be used to empirically determine whether we need things like reinitialize-data and set-predecessors after certain passes
20:52:48
drmeister
karlosz: I'll be able to give you more of a hand there once I get done what I'm working on now.