[Bug ipa/91872] [10 Regression] ICE in insert_vi_for_tree, at tree-ssa-structalias.c:2877, or ICE in expand_expr_real_1, at expr.c:10062

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Sep 24 08:08:00 GMT 2019


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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |NEW
                 CC|                            |rguenth at gcc dot gnu.org
           Assignee|rguenth at gcc dot gnu.org         |unassigned at gcc dot gnu.org

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
For the PTA issue the first of the 'this' PARM_DECLs "duplicates" comes from

_ZThn16_N12_GLOBAL__N_11B3fooEi.artificial_thunk.0/42
(_ZThn16_N12_GLOBAL__N_11B3fooEi.artificial_thunk.0) @0x7ffff69a6438
  Type: function definition analyzed
  Visibility: artificial
  References: _ZN12_GLOBAL__N_1L2goE/1 (write)
  Referring: 
  Availability: local
  Function flags: count:118111600 (estimated locally) body local nonfreeing_fn
  Former thunk fixed offset -16 virtual value 0 indirect_offset 0 has virtual
offset 0
  Called by: int main(int, char**)/24 (955630223 (estimated locally),8.09 per
call) void bar()/23 (955630223 (estimated locally),8.09 per call) 
  Calls: 

and the second

_ZThn16_N12_GLOBAL__N_11B3fooEi/19 (virtual void
{anonymous}::B::_ZThn16_N12_GLOBAL__N_11B3fooEi(int)) @0x7ffff69a6ca8
  Type: function definition analyzed
  Visibility: prevailing_def_ironly virtual artificial
  Address is taken.
  References: _ZN12_GLOBAL__N_1L2goE/1 (write)
  Referring: _ZTVN12_GLOBAL__N_11BE/25 (addr)
  Availability: available
  Function flags: count:118111600 (estimated locally) body nonfreeing_fn
  Former thunk fixed offset -16 virtual value 0 indirect_offset 0 has virtual
offset 0
  Called by: 
  Calls: 

both FUNCTION_DECLs share the same DECL_ARGUMENTS, that doesn't look correct?

The duplicate is created by duplicate_thunk_for_node in a new IPA SRA path
but I don't see any DECL_ARGUMENTS adjustment / copying of PARM_DECLs?
Note both thunks above are "analyzed" and thus have a GIMPLE body.

Not a IPA PTA issue but wrong GIMPLE IMHO.

You can see it in pr60640-4.C.082i.materialize-all-clones:

{anonymous}::B::_ZThn16_N12_GLOBAL__N_11B3fooEi (struct BD.2510 * const
thisD.2622)
{
  struct BD.2510 * const adjusted_this.16D.2748;

  <bb 2> [local count: 10000]:
  this_2 = this_1(D) + 18446744073709551600;
  adjusted_this.16_3 = this_2;
  {anonymous}::B::*.LTHUNK0 (adjusted_this.16_3); [tail call]
  return;

}

and

{anonymous}::B::_ZThn16_N12_GLOBAL__N_11B3fooEi.artificial_thunk.0 (struct
BD.2510 * const thisD.2622)
{
  struct BD.2510 * const adjusted_this.15D.2745;

  <bb 2> [local count: 10000]:
  this_2 = this_1(D) + 18446744073709551600;
  adjusted_this.15_3 = this_2;
  {anonymous}::B::foo.constprop (adjusted_this.15_3); [tail call]
  return;

}

note the same UID for the this PARM_DECL.


More information about the Gcc-bugs mailing list