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.