https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108996
--- Comment #8 from Ulrich Weigand <uweigand at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #5) > Though, relying on DW_OP_entry_value is not reliable, if e.g. tail calls are > (or could be) involved, then GDB needs to punt. The only way a tail call could happen is if the return value is passed through directly to the (caller's) caller, so the return buffer address should still be correct, right? > So, I wonder if we just shouldn't ask for a DWARF 6 extension here, have > some way for the compiler to specify DW_AT_location for the return value. > Then for -O1+ -g with var-tracking that address could be for PowerPC r3 > register in such functions or wherever its initial value is tracked > (including DW_OP_entry_value). > While for -O0, we'd see we've spilled that parameter to stack and would set > DW_AT_location to that place spilled on the stack. I don't think it is possible to track the value in the callee - the value may not be available *anywhere* because it is no longer needed. (Also, I don't think the implicit return buffer address is guaranteed to be spilled to the stack even at -O0.)