http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57294

Martin Jambor <jamborm at gcc dot gnu.org> changed:

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

--- Comment #5 from Martin Jambor <jamborm at gcc dot gnu.org> ---
Actually, the interactions are a bit more convoluted, what happens is
the following:

  1. Early passes are run on function baz, references are computed for
     that function.

  2. Early passes are run on function bar.  IPA-SRA triggers and
     changes the call statement in function baz.  This means that the
     recorded pointer to the statement in the symbol table is stale.

  3. During inlining we ask ipa_find_reference to find the reference
     corresponding to the correct statement and of course do not get
     anything, which triggers an assert.

I've confirmed this is the case by putting a call to
cgraph_rebuild_references into convert_callers_for_node and it "fixes"
the issue.  But of course that could be quite expensive.

I'll revisit my efforts to remove IPA-SRA completely, this is another
piece of motivation but I am not entirely sure what to do about this
in the short term.  Probably update references in IPA-SRA.

Reply via email to