https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108996
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mark at gcc dot gnu.org --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Ulrich Weigand from comment #4) > (In reply to Jakub Jelinek from comment #3) > > What is done on other arches? > > That depends on the platform ABI. On some arches, including x86/x86_64 and Ah, you're right here, such functions effectively return that invisible return address pointer on x86. 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. 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.