freenode/#clasp - IRC Chatlog
Search
13:24:30
drmeister
Alright - then dump the result of find into a file in /tmp/llfiles.sh and edit it and stick a path/to/llc in front of every one of them.
13:28:09
Bike
it generates two landing pads in a row (?) and doesn't add clauses or anything, so that's just wholly fucked up
13:30:42
drmeister
Telling a landing pad that it is a cleanup is an API call that sets a flag. Clauses are added using another API call. You are probably staring at the code right now and see that.
13:36:07
Bike
i guess if we were generating HIR ourselves it could go the same way. nothing to stop us from making a nop with no successors or whatever
13:40:05
drmeister
So what was up with that landingpad - did it need to be a cleanup or did it have a clause?
13:41:18
Bike
it needed to be a landingpad. i think i transmuted (llvm-sys:set-cleanup landpad t) into (cmp:irc-create-landing-pad 1) in some fit of madness
15:59:38
drmeister
Signal an error in slime and then quit sldb. That always stresses our exception handling.
16:29:24
Bike
i mean i have this artificial one that i got by calling ERROR in a handler-bind, but that's uninteresting
16:42:25
karlosz
drmeister: right now, i'm only implicitly doing the analysis in my translate method for <-, so it's backend speicific atm. however, i think it should really be a backend independent HIR pass, so I'll try to write it.
16:43:22
karlosz
so how does one write this kind of HIR pass that goes through the whole graph and changes the graph structure? is there some sort of graph traverse i can use?
16:44:22
karlosz
map instructions or something? does that allow me to combine and remove nodes as well?
16:45:20
Bike
yes, the cleavir-ir package exports several functions for mapping and graph manipulations
16:47:04
Bike
when i've written similar passes, i've used map-instructions, conditionally collected instructions to delete, then deleted them all in one go
16:50:19
karlosz
so you're not making a new flow graph in a functional manner, but rather deleting nodes off the existing graph
17:58:48
karlosz
okay, so i've collected a list of useless asign nodes. should i call delete-instruction inside a map-instrucition call? that doesn't seem right. how do you mean you've deleted them all in one go?
18:04:58
Bike
something like (let (death-row) (map-instructions (lambda (instruction) (when ... (push instruction death-row))) ...) (mapc #'delete-instruction death-row))
18:06:35
karlosz
looking at the code for typeq elimination, it seems that it does also modify the instruction graph during mapping
18:09:56
Bike
other important functions are set-predecessors and reinitialize-data, which fix up the predecessor slots of instructions and the user/definer slots of data, resp
18:18:14
karlosz
i need to merge the uses and defs of the input and output of the assign node im deleting, and i want to make sure im not tripping over an actual invariant
18:21:36
karlosz
so if i want to delete a lexical location from the graph, do i just manually remove all its uses and defs? tjhere's no analog of delete instruction for actual data nodes, correct?
18:22:36
Bike
yes. you don't need to bother editing the datum itself, reinitialize-data will restore consistency after you mess witht he instructions
19:53:22
Bike
i merged a bunch of my sicl changes together and rebuilt everything, which resulted in alexandria failing even earlier
19:57:42
Bike
i isolated what form is having the problem, which is good. it's a page long macro,which is less good
19:59:34
drmeister
I still think we should have a HIR validator. We could write modules and come up with hypotheses about what is wrong and then test the HIR.
20:05:07
Bike
as usual, the hir is too big to look at as a graph,and reductions that really shouldn't change anything do...
20:14:48
Shinmera
the actual documentation can just be a file in the format of your choice (typically markdown or html)
20:15:31
Shinmera
I'm currently doing some more work on Staple to add stuff like source-code links to definitions.
20:16:38
drmeister
https://cloud.githubusercontent.com/assets/192614/17861955/29539898-6861-11e6-9072-82670e08f962.gif
20:18:33
Bike
as long as we have something written down, we can work out how to hook it up to whatever development environment
20:20:56
Shinmera
Either in the definitions, or anywhere else by (setf documentation), or using documentation-utils for a bit more convenience
20:21:13
Shinmera
The latter would also allow hooks to do markup transfomations and extraction if you ever want that in the future I guess
20:21:48
Bike
i don't care where we put it. moving it later is less of a project than writing it in the first place
20:24:21
Bike
hm, the bug seems to have the same source as last time, a datum with two owners. a man may not serve two masters
21:41:41
Colleen
DVSSA: drmeister said 8 hours, 49 minutes ago: Here is a good link that describes the Rosetta atom tree https://www.rosettacommons.org/docs/latest/getting_started/Getting-Started
22:17:01
karlosz
drmeister: if you're still interested, i've coded up a HIR pass I'm fairly confident reduces all <- nodes correctly. i've tested and graphed on a few inputs and i get good bytecode, but it would be great if you could test it with clasp.
22:19:37
Bike
if you have (setq x y) (setq x z) (f x), x has one use but can't be collapsed into y, but if i'm reading these conditions right it will be