From: Carlo Wood Date: Mon, 29 Sep 2003 23:09:12 +0000 (+0000) Subject: re PR debug/12319 (Wrong DW_AT_low_pc and DW_AT_high_pc for DW_TAG_inlined_subroutine) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b82c4660a5f2cdd720d5b68c29006294245d75c7;p=gcc.git re PR debug/12319 (Wrong DW_AT_low_pc and DW_AT_high_pc for DW_TAG_inlined_subroutine) PR debug/12319 * cfglayout.c (insn_scope): Use prologue_locator and epilogue_locator; return the outer function scope for pro- and epilogue insns. From-SVN: r71926 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a9fdc0e083f..c2f690187e8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-09-30 Carlo Wood + + PR debug/12319 + * cfglayout.c (insn_scope): Use prologue_locator and + epilogue_locator; return the outer function scope for + pro- and epilogue insns. + 2003-09-29 Zack Weinberg * objc/objc-act.c (encode_type): Encode INTEGER_TYPEs and diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c index 7121a3e5db4..f713eb16651 100644 --- a/gcc/cfglayout.c +++ b/gcc/cfglayout.c @@ -415,6 +415,18 @@ insn_scope (rtx insn) int min = 0; int loc = INSN_LOCATOR (insn); + /* When block_locators_locs was initialized, the pro- and epilogue + insns didn't exist yet and can therefore not be found this way. + But we know that they belong to the outer most block of the + current function. + Without this test, the prologue would be put inside the block of + the first valid instruction in the function and when that first + insn is part of an inlined function then the low_pc of that + inlined function is messed up. Likewise for the epilogue and + the last valid instruction. */ + if (loc == prologue_locator || loc == epilogue_locator) + return DECL_INITIAL (cfun->decl); + if (!max || !loc) return NULL; while (1)