freenode/#clasp - IRC Chatlog
Search
17:49:50
drmeister
Can you print the module that is passed to that function and use that function to get the module that the function belongs to and check if they are the same?
17:54:52
drmeister
I think you can invoke (llvy-sys:get-parent <function>) and you will get the Module that it belongs to.
17:59:17
drmeister
So you can print the module you get from (llvm-sys:get-parent main-function) and you can print the module passed to the function.
18:01:48
drmeister
Huh - it might be the hierarchy isn't set up the way I thought it was. You used llvm-sys:get-parent?
18:08:14
drmeister
Confirm get-parent doesn't work with function. There is the llvm class hierarchy and then there is the clasp class hierarchy and they don't match without work.
18:09:23
drmeister
https://github.com/clasp-developers/clasp/blob/dev/src/llvmo/llvmoExpose.cc#L2524
18:09:32
drmeister
I mean I just added here... https://github.com/clasp-developers/clasp/blob/dev/src/llvmo/llvmoExpose.cc#L2524
18:12:59
drmeister
CL_EXTERN_DEFMETHOD(Function_O,(llvm::Module *(llvm::Function::*)())&llvm::Function::getParent);
18:21:53
Bike
it looks like things would have to be completely bonkers for it to not match, but i guess this bug is pretty bonkers
18:42:25
drmeister
Yeah - I guessed correctly. I am trying to pass a pointer to a function in module A to a call in module B.
18:44:23
drmeister
ACTION has advanced to the sixth stage of debugging: https://www.spreadshirt.com/6+stages+of+debugging+programmer+men-s+premium+t-shirt-D13177527
18:49:33
drmeister
Oh shit - the ID is a red herring - it's not tied to the module the way I thought it was.
18:56:25
drmeister
I don't know what the problem is right now. The parent of the main-function is the correct module, the one that is passed in to add-global-ctor-function.
19:40:34
shiho
scymtym: drmeister here on shiho's account: We are trying to handle :CHAIN. It gets a list of nodes - we need to turn it into something like (chain x (chain y (chain z)))
19:55:51
drmeister
Hi - I'm talking through shiho's account - well I was a second ago - I'll paste and show you what we mean.
19:57:04
scymtym
so you get a list of elements from the (+ (or bond-atom branch)) expression and the result should be a list of chain nodes shaped like your example above
19:57:54
shiho
We need to transform it into something like the following - with make-node and relate methods doing the translation (we think)
19:58:16
scymtym
yes, that's from (node* (:chain) (* :element elements)), i.e. a :chain node with multiple :element children
20:02:04
shiho
We can create an intermediate object that would be returned by make-node and then take whatever is passed to relate and build the nested structure in relate - or connect it together.
20:11:42
scymtym
shiho: would this technique work: https://techfak.de/~jmoringe/linearize-test.lisp ?
20:20:47
scymtym
well, there will be multiple MAKE-NODE calls. (make-node :chain) 1 time, (make-node :atom (or whatever the children are)) N times, (relate :element <chain> <child>) N times
20:23:18
scymtym
for a single node with a (* :element …) relation, it's basically (finish-node (reduce (lambda (left right) (relate :element left right)) :initial-value (make-node :chain)))
20:26:29
scymtym
in my sketch, each RELATE call extends the tree of chain nodes by adding a new chain node and storing it in the tail slot of the previous one, the CONS only remembers the first chain node so it can be returned from FINISH-NODE
20:40:25
Bike
i tried dumping the module after the functions are erased and it's really depopulated. no run-all, or really no anything.
21:04:07
Bike
i think it's during optimize-module-for-compile-file, before remove-always-inline-functions
21:17:50
drmeister
I have this in DEBUG_OPTIONS (wscript.config) . "DEBUG_LLVM_OPTIMIZATION_LEVEL_0",
21:23:33
drmeister
Maybe - I don't see the connection - but I did change a lot of code for stackmaps.
21:24:35
Bike
5bcc6cf56 is the busted one. you did a fair amount of rearrangement. might have dredged something from the pits by accident
21:51:02
Bike
in cclasp it complains about the (eql module (llvm-sys:get-parent main-function)) thing, i guess because the cclasp definition of eql doesn't handle pointers
3:26:03
drmeister
An alternative to always_inline may be to declare the builtins 'inline' and '__attribute__((used))' and then remove the 'used' list when we want to delete the builtin functions after inlining them.
3:48:13
Bike
i'm no longer sure how it could possibly have built them and then crashed when i try to start up
3:49:39
Bike
it finished building like five minutes before i was going to leave, so i just ran it, it segfaulted, i went "uuuuugh" and left
3:51:54
drmeister
Yeah - also - I changed my builtins - I'm experimenting with __attribute__((used))
3:54:14
drmeister
Hmm, Martin needs to go up to Boston - what if you swung by here for a few days and then drove up with him? - But you have dog sitting issues and he was supposed to be here Wednesday.