[Bug tree-optimization/65241] [5 Regression] ICE (in remove_local_expressions_from_table, at tree-ssa-dom.c:1081)

law at redhat dot com gcc-bugzilla@gcc.gnu.org
Mon Mar 2 20:32:00 GMT 2015


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

Jeffrey A. Law <law at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED

--- Comment #3 from Jeffrey A. Law <law at redhat dot com> ---
This is a fairly obscure bug with a change from last year.

Basically Richi added a blob of code in lookup_avail_expr which walks the alias
chains after a "partial hit" in the hash table (I'm defining partial hit as a
hit ignoring vop/alias issues).  If the walking of the alias chains fails, then
the new code unconditionally twiddles the partial hit entry in the hash table.

This is fine and good, except that sometimes we call that routine when we want
to just look for an element in the table, but not insert anything.

The jump threader in particular wants to be able to replace operands in a
statement with their temporary equivalences, look for the result in the
available expression table, then restore the operands to their original values.
 The twiddling of the hash table in this particular case is particular bad as
we'll end up leaving the hash table in an inconsistent state after the operands
are  restored to their original values.  We detect this inconsistent state when
we unwind the table.

Patch testing in progress.



More information about the Gcc-bugs mailing list