libera/#clasp - IRC Chatlog
Search
12:23:58
Colleen
Bike: drmeister said at 2021.06.26 18:52:33: Here's another one... https://github.com/clasp-developers/clasp/issues/1172
12:23:58
Colleen
Bike: drmeister said 18 hours, 52 minutes ago: I think the problem with llvm.dbg.value/addr is that inlined functions are getting the wrong dbg scope information when they are inlined. They are keeping the scope of their original function - not the scope of the function that they are ending up in. I've been updating the issue as I dig deeper... https://github.com/clasp-developers/clasp/issues/1172
12:24:57
Bike
i don't understand how inlining would be related, since these dbg calls are only generated by the argument parser, i.e. not for inlined functions
12:25:23
Bike
and when i said "really deeply broken" i meant how it's based on a variety of dynamic variables defining various parts of the source info
12:38:19
drmeister
I've been moving away from dynamic variables and passing info as function arguments.
12:39:15
drmeister
The problem is that the debug info about function scope has to refer to DISubprogram entries that match the actual functions in the module.
12:40:04
drmeister
Inlined functions keep track of the source location and function scope but it's the function scope from where they were defined - not where they are being inlined.
12:43:46
drmeister
It thinks X is in CAR but it's being inlined in %REEVALUATE-CONSTANT^ALEXANDRIA.0.DEV
12:44:12
Bike
although i guess i might have screwed something up in the dbg generation i already did
12:54:45
Bike
that's probably going to be from here i think https://github.com/clasp-developers/clasp/blob/main/src/lisp/kernel/cleavir/translation-environment.lisp#L67
13:02:51
drmeister
I see what you mean about the dynamic variables - I'm trying to remove the useless ones.
13:04:34
Bike
i think this cleavir stuff was working fine before, so i must have screwed it up as i was trying to get the rest working
13:05:49
drmeister
I've got some ideas on how to get it working. I've made a lot of changes but I haven't pushed anything. I'm doing it in a branch.
13:07:45
drmeister
In cclasp I changed the two function names for every function by appending "-xep" to the XEP function and "-local" to the local function - does that sound ok?
13:08:16
drmeister
It makes it easier to figure out what is going on with the debug info if they are distinguishable.
13:09:15
Bike
like, it will say you're in a call to FOO-XEP instead of just FOO like it says in the source
13:09:17
drmeister
What I want to do is get this compiling again and then if you could connect to my emacs I can walk us through what I've been up to.
13:17:28
yitzi
drmeister: Apparently someone just came up with a way to convert Arch's PKGBUILD to Debian packages. https://dur.hunterwittenborn.com/
13:17:51
drmeister
If I recall correctly these mangled names work by scanning right to left for ^^ and then you have "kind" information like "FN" then you keep scanning for ^ and then you have the package and then you scan for ^ and you have the symbol name
13:20:42
drmeister
Bike: The debug information is fussy. Each instruction in a function has to have a !dbg entry to a DILocation and that has to point to a DISubprogram that has the same name as the function.
13:21:51
drmeister
Inline functions carry their source information with them and I'm still not sure how the subprogram info is supposed to work.
13:23:34
drmeister
When you create an llvm function named XYZ and if there is one already then llvm names it XYZ.2 - we have to use (llvm-sys:get-name fn) to get the XYZ.2 and use that for the debug info.
13:24:30
drmeister
Functions that will be inlined will carry "XYZ" in their origins - we can't use those names for debug info.
15:26:37
drmeister
https://github.com/clasp-developers/clasp/blob/dbginline/src/lisp/kernel/cleavir/translation-environment.lisp#L134
16:39:46
yitzi
drmeister: Managed to build a deb package for llvm13! https://plaster.tymoon.eu/view/2522#2522
16:44:01
drmeister
Bike: Do you have any more ideas about how to organize the debug information for lexical variables?
16:47:57
yitzi
drmeister: Was there a reason for the SBCL 2.1 version check? Was there a specific feature in 2.1 versus 2.0 that the build script needed?