From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26277 invoked by alias); 30 Apr 2014 10:13:03 -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 26210 invoked by uid 48); 30 Apr 2014 10:12:58 -0000 From: "rguenth at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/61010] [4.8/4.9/4.10 Regression] Infinite recursion in fold Date: Wed, 30 Apr 2014 10:13:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: middle-end X-Bugzilla-Version: 4.10.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: rguenth at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 4.8.3 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: 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: 2014-04/txt/msg02238.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61010 --- Comment #5 from Richard Biener --- Indeed we iterate in /* Canonicalize (X & C1) | C2. */ because we fold (unsigned int) (a * 64) & 255 to (unsigned int) (a * 64) & 192 in /* Fold (X * CST1) & CST2 to zero if we can, or drop known zero bits from CST2. */ The iterating input is ((unsigned int) (a * 64) & 192) | 63 where it seems to fail to "Minimize the number of bits set in C1" because it hits the "unless" case. One option is to apply the same "unless" case to the "drop known zero bits" BIT_AND_EXPR folding.