On 06/12/2023 22:17, Martin Frb via fpc-devel wrote:
If I have enough code, so clang does not optimize the entire function
away in -O1, then clang writes info for some of the lines.
Actually the variable is in a (or several?) registers.
And clang misses some lines too.
But it covers some lines in the procedure.
https://releases.llvm.org/11.0.0/docs/SourceLevelDebugging.html#format-common-intrinsics
states that llvm.dbg.declare is identical to llvm.dbg.addr, except that
it works badly in the context of optimisations, and that as a result it
is deprecated and will be removed.
Because of this reason, FPC only uses llvm.dbg.addr. But clang still
uses llvm.dbg.declare, and when I change FPC to use that one, the debug
info for the variables in your test program is correct. So I'll change
FPC to also use llvm.dbg.declare.
Jonas
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel