[Bug debug/83157] [6/7/8 regression] gcc.dg/guality/pr41616-1.c fail, inline instances refer to concrete instance as abstract origin

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Jan 10 12:31:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83157

--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> ---
I'm quite sure older GCC must be somehow affected - or I'm really curious how
they are not.

While the patch fixes the dwarf for the small C testcase it doesn't fix the
pr41616-1.c execute fail.  The dwarf looks "fine" there as well though,
what we lack is a call-site parameter for the 2nd gual_checkval:

 <4><6e5>: Abbrev Number: 39 (DW_TAG_GNU_call_site)
    <6e6>   DW_AT_low_pc      : 0x19d
    <6ee>   DW_AT_abstract_origin: <0x859>
    <6f2>   DW_AT_sibling     : <0x70a>
 <5><6f6>: Abbrev Number: 38 (DW_TAG_GNU_call_site_parameter)
    <6f7>   DW_AT_location    : 1 byte block: 55        (DW_OP_reg5 (rdi))
    <6f9>   DW_AT_GNU_call_site_value: 9 byte block: 3 78 0 0 0 0 0 0 0         
(DW_OP_addr: 78)
 <5><703>: Abbrev Number: 38 (DW_TAG_GNU_call_site_parameter)
    <704>   DW_AT_location    : 1 byte block: 54        (DW_OP_reg4 (rsi))
    <706>   DW_AT_GNU_call_site_value: 2 byte block: 9 ff       (DW_OP_const1s: 
-1)
 <5><709>: Abbrev Number: 0
 <4><70a>: Abbrev Number: 37 (DW_TAG_GNU_call_site)
    <70b>   DW_AT_low_pc      : 0x1b6
    <713>   DW_AT_abstract_origin: <0x859>
 <5><717>: Abbrev Number: 38 (DW_TAG_GNU_call_site_parameter)
    <718>   DW_AT_location    : 1 byte block: 55        (DW_OP_reg5 (rdi))
    <71a>   DW_AT_GNU_call_site_value: 9 byte block: 3 78 0 0 0 0 0 0 0        
(DW_OP_addr: 78)
 <5><724>: Abbrev Number: 0
 <4><725>: Abbrev Number: 0

and the location list for the decl itself is

    00000365 0000000000000198 00000000000001ae (DW_OP_const1s: -1;
DW_OP_stack_value)

which covers too many instructions(?).  We expand from

  # DEBUG b => -1
  # DEBUG BEGIN_STMT
  guality_check.constprop ("b", -1);
  # DEBUG BEGIN_STMT
  if (_35 > 0)
    goto <bb 18>; [64.00%]
  else
    goto <bb 19>; [36.00%]
;;    succ:       18
;;                19

;;   basic block 18, loop depth 0
;;    pred:       17
;;    succ:       19

;;   basic block 19, loop depth 0
;;    pred:       17
;;                18
  # b_88 = PHI <-1(17), 1(18)>
  # DEBUG b => b_88
  # DEBUG BEGIN_STMT
  _89 = (long int) b_88;
  guality_check.constprop ("b", _89);


More information about the Gcc-bugs mailing list