freenode/#clasp - IRC Chatlog
Search
22:15:28
karlosz
getting Module error: inlinable function call in a function with debug info must have a !dbg location
22:16:04
karlosz
i tried adding (llvm-sys:add-fn-attr the-function 'llvm-sys:attribute-no-inline) for the main function
22:16:18
karlosz
drmeister: i'm trying to do the thing where we have entry points call main functions
22:17:22
karlosz
the first LLVM function is an "entry point function" which right now im just trying to get to call the "main function" in llvm ir
22:18:06
drmeister
I thought you would just create a regular function and give it the "fastcc" calling convention or something like that.
22:23:26
drmeister
Have you got Clasp setup to generate human readable .ll files rather than .bc files?
22:23:52
drmeister
I've never gotten malformed .bc files to disassemble - so I set things up so that clasp will generate human readable .ll files for debugging.
22:24:22
drmeister
llvm-ir is fussy. You are probably missing some attribute !dbg to the call or the callee or something.
22:24:34
karlosz
for (compile nil '(lambda (y) y)) i am compiling it currently to: https://paste.gnome.org/pbw5x8b9f
22:25:29
karlosz
i also am not sure what the best way to annotate the call to INTERNALLAMBDA as "fastcc" convention is
22:27:48
drmeister
Yeah - the fastcc thing is a bit of a diversion at this point. It's just to make the calls faster by forcing llvm to try to use registers as much as possible for passing arguments.
22:33:06
karlosz
i think its okay for indirect calls to not have !dbg but i think direct calls like im doing probably have to?
22:33:56
karlosz
Module error: inlinable function call in a function with debug info must have a !dbg location
22:33:58
karlosz
%8 = call { i8*, i64 } (i8*, i64, i8*, i8*, i8*, i8*, ...) @"INTERNALLAMBDA^COMMON-LISP^FN^^"(i8* %0, i64 %1, i8* %2, i8* %3, i8* %4, i8* %5)
22:34:36
drmeister
Oh - so it is - and it's this call %8 = call { i8*, i64 } (i8*, i64, i8*, i8*, i8*, i8*, ...) @"INTERNALLAMBDA^COMMON-LISP^FN^^"(i8* %0, i64 %1, i8* %2, i8* %3, i8* %4, i8* %5)
22:35:03
drmeister
Maybe it's calls that can be inlined that absolutely need a !dbg? I'm waiving my hands here.
22:36:01
karlosz
yeah so i think that is in fact the problem, and your callee is not inlinable because its an indirect call whereas im trying to do a direct call
22:36:16
karlosz
so to insert the !dbg i should just use the macro with-debug-info-source-position i think
22:37:20
drmeister
I also do things like generate an example on godbolt and then hand edit the llvm-ir to remove !dbg and see if that breaks in the same way.
22:38:21
karlosz
so yes i think calls like that do need a debug info, which can just be some dummy debug info
22:40:05
drmeister
I talked with a guy at Google today who worked on a JVM compiler and Android llvm stuff. We are talking about adding GC managed pointers to C++.
23:00:57
Bike
eliminate-catch and stuff is in again. I tried moving most catch elimination to a trigger, but it caused some strange difficulties with the start block of an interpolated function not being mergeable
23:01:20
Bike
i guess it's possible if stuff gets merged and eliminated enough that a function goes right into a loop or something, but i suspect i missed something else up
23:05:13
Bike
it eliminates catch instructions that don't actually have any nonlocal exits. it lets the ir block structure be simplified
23:06:01
karlosz
stassats: catch is sort of like the entry node in python when it allows nlx-info to get closed over
23:12:22
Bike
probably do want to rearrange a few little things, like have the USE slot default to nil instead of unbound
23:12:50
karlosz
when i tried loading some quicklisp code (i think clx) bir crashed in the bir verifier
23:13:28
karlosz
i haven't been able to load either mcclim or clx, i think one of the reasons is because ACAS-instruction
0:47:46
karlosz
optionals and rests will need some work because im manually parsing the stuff out of the lambda list for the moment for local calls