From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 80484 invoked by alias); 2 Mar 2015 20:32:39 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 80405 invoked by uid 48); 2 Mar 2015 20:32:36 -0000 From: "law at redhat dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/65241] [5 Regression] ICE (in remove_local_expressions_from_table, at tree-ssa-dom.c:1081) Date: Mon, 02 Mar 2015 20:32:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 5.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: law at redhat dot com X-Bugzilla-Status: ASSIGNED X-Bugzilla-Priority: P1 X-Bugzilla-Assigned-To: law at redhat dot com X-Bugzilla-Target-Milestone: 5.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_status Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-03/txt/msg00195.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65241 Jeffrey A. Law changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED --- Comment #3 from Jeffrey A. Law --- 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.