freenode/#clasp - IRC Chatlog
Search
5:44:08
karlosz
its actually realtively easy to tell which <- instructions are actually needed in the flowgraph. if a <- instructions's target node has only 1 def, and either the source node has 1 def or the target has 1 use, then the <- instruction can be eliminated, with the source and target nodes merging into one node
5:45:00
karlosz
that's the algorithm i'm using to only produce the minimum amount of runtime store and loads from <- instructions
5:45:34
karlosz
perhaps that can be the basis for a general purpose HIR pass that cleans up the <- nodes
11:29:30
drmeister
karlosz: Do you have a Common Lisp function that can take HIR and carry out this transformation?
12:52:05
drmeister
::notify DVSSA Here is a good link that describes the Rosetta atom tree https://www.rosettacommons.org/docs/latest/getting_started/Getting-Started
13:03:28
Bike
drmeister: build failed. the error is comprehensible except i'm not sure where it's coming from
13:04:59
Bike
i'm wondering if maybe it isn't kosher to alter an instruction after generating other instructions
13:06:09
Bike
what i'm doing in landing-pad.lisp is generating a landing pad, then generating some other instructions, then adding clauses to the landing pad
13:06:10
drmeister
Ok - we have a landing pad that has no clauses and is not indicated as being a cleanup - that should be easy.
13:06:56
Bike
also, re karlosz's transformation, i'm pretty sure i wrote out something like that, but it wasn't adequate for what i wanted it for (simplifying analysis) so i didn't pursue it
13:07:26
drmeister
It's ok, you just need to get the info going to the right place. There are these things called IRBuilder(s) - they are like cursors that point to where the next instruction is going. If you don't keep them updated properly info will go to the wrong place.
13:07:47
Bike
that controls it even for something like add-clause that takes the landing pad as an argument?
13:08:52
drmeister
Everything is being generated as .ll files - right? Do you know which files have the bad IR?
13:09:56
drmeister
Well, the build/boehm/fasl/cclasp-boehm/** directories will be filled with .ll files - we could run them all through llc in a loop and maybe find the ones with bad landing pads.
13:10:43
Bike
it prints the link command and then it prints the LandingPadInst error a few dozen times
13:20:35
drmeister
Try this. find build/boehm/fasl/cclasp-boehm/ -name '*.ll' -print > /tmp/llfiles.txt
13:21:43
drmeister
I think this: find build/boehm/fasl/cclasp-boehm/ -name '*.ll' -print | xargs path/to/llc
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