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

--- Comment #11 from Tom de Vries <vries at gcc dot gnu.org> ---
I build with -fdump-tree-all -fdump-ipa-all -fdump-rtl-all, resulting in a
rather large build:
...
$ du -hs build/
107G    build/
...

At gdb.ltrans58.ltrans.134t.bitintlower1, I have in parse_linespec:
...
  <bb 231> [local count: 413228]:
  # DEBUG BEGIN_STMT
  throw_exception (&file_exception);
...
and:
...
  <bb 266> [count: 0]:
<L5>:
  _143 = MEM[(struct __shared_count *)&file_exception + 16B]._M_pi;
  if (_143 != 0B)
    goto <bb 267>; [0.00%]
  else
    goto <bb 268>; [0.00%]

  <bb 267> [count: 0]:
  _M_release (_143);

  <bb 268> [count: 0]:
  file_exception ={v} {CLOBBER(eob)};
  # DEBUG this => NULL
  resx 2
...

At gdb.ltrans58.ltrans.135t.sra, I have:
...
  <bb 231> [local count: 413228]:
  MEM <signed int> [(struct gdb_exception *)&file_exception] =
file_exception_611;
  MEM <struct _Sp_counted_base *> [(struct gdb_exception *)&file_exception +
16B] = file_exception$16$_M_pi_553;
  throw_exception (&file_exception);
...
and:
...
  _143 = file_exception$16$_M_pi_267;
...
which is defined by a phi:
...
  <bb 266> [count: 0]:
  # file_exception$16$_M_pi_267 = PHI <file_exception$16$_M_pi_553(225),
file_exception$16$_M_pi_542(246), file_exception$16$_M_pi_702(47),
file_exception$16$_M_pi_702(19), file_exception$16$_M_pi_702(26),
file_exception$16$_M_pi_702(30), file_exception$16$_M_pi_702(32),
file_exception$16$_M_pi_702(44), file_exception$16$_M_pi_702(46),
file_exception$16$_M_pi_702(16), file_exception$16$_M_pi_702(49),
file_exception$16$_M_pi_702(50), file_exception$16$_M_pi_702(68),
file_exception$16$_M_pi_702(69), file_exception$16$_M_pi_702(70),
file_exception$16$_M_pi_271(265), file_exception$16$_M_pi_553(231),
file_exception$16$_M_pi_553(232), file_exception$16$_M_pi_542(233),
file_exception$16$_M_pi_542(236), file_exception$16$_M_pi_702(259)>
...

I'm not sure how to read this.  There's an incoming edge from bb231, while
throw_exception doesn't return.  If that is an incoming edge for the resulting
uncaught exception, then the value file_exception$16$_M_pi_553 is wrong.

The actual value of file_exception is in memory, as updated by throw_exception.

Reply via email to