From patchwork Wed May 29 01:35:03 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Easwaran Raman X-Patchwork-Id: 247086 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "localhost", Issuer "www.qmailtoaster.com" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 4249F2C0336 for ; Wed, 29 May 2013 11:35:14 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:date:message-id:subject:from:to:cc:content-type; q=dns; s=default; b=LSqu/IZiFpb5pAZ/FuLgn1sCqV77m2Em8cssWwd76O7 hvpzCKnOk58A8CEnfgYMpZn0MvZGKr5uL4YCbnr8HofM9u61eUoMFkFP+0NCByHw 5udWnM7KfxxfDXTcr9SzUelmCg0ySzoGCYt2qSfpX0IJ6BwEq1ZTeTiuAImd0Zu0 = DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:date:message-id:subject:from:to:cc:content-type; s=default; bh=Wz4QpriY6rVnghkllDIO992Bpd4=; b=fDzkKCMTV8atREnYF daD6NHPfBB9wKRNJf1YxnLcEIfJOeKQVuJzDkuH7/2u3t1IsLbnRqVKjLGKsgZPy JpjcnZlDVr/uJc56d2wWGBpoEOZ55co6b9U2yCqGN4WoyHn0pOUBCxJpOatrHOWn b63NdeEpwjr3irAPJ1SyQbZosY= Received: (qmail 26714 invoked by alias); 29 May 2013 01:35:07 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 26595 invoked by uid 89); 29 May 2013 01:35:06 -0000 X-Spam-SWARE-Status: No, score=-4.0 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW, RCVD_IN_HOSTKARMA_YE, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.1 Received: from mail-oa0-f48.google.com (HELO mail-oa0-f48.google.com) (209.85.219.48) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Wed, 29 May 2013 01:35:06 +0000 Received: by mail-oa0-f48.google.com with SMTP id i4so10665724oah.7 for ; Tue, 28 May 2013 18:35:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:date:message-id:subject:from:to:cc:content-type :x-gm-message-state; bh=yl2z7FfmS+MWH/U6l4ZVtCsFU+Afafwiht9FZLiP0uk=; b=eOcWvcbrRtQDgKDZIl39uRYGXhTjAxAKn6RHlfZZZT8UP/mFlYb1nTuWZLwBIxKjQo 7kf74cyIOGWiVkLcUjyQqGRLnSMpe8tUixb/q8wiWpfe/jlHSFCQTP+6FYMFyswEJKAo XQ8OK30+dacA1ST2qi2oAig4u4fUVmc0wL86u5coJG2psUfXcoF2RwRt0tkRjb+Zz9UM QZfmxCPbY1cXdXjOs8VtilIQjeUmPWTZrk2DPw0ylzdzlq47waUY3FIyTsv7tQXN0cGK N0fdWI6UJY5Q8Uns8Rihg2MKwYOg1e2nzjZpQDmSRQFesBkV7gURK4U5EjpeR4q5sWvY SapA== MIME-Version: 1.0 X-Received: by 10.182.40.202 with SMTP id z10mr251538obk.74.1369791303974; Tue, 28 May 2013 18:35:03 -0700 (PDT) Received: by 10.76.28.72 with HTTP; Tue, 28 May 2013 18:35:03 -0700 (PDT) Date: Tue, 28 May 2013 18:35:03 -0700 Message-ID: Subject: Fix PR 57442 From: Easwaran Raman To: gcc-patches@gcc.gnu.org Cc: Richard Biener X-Gm-Message-State: ALoCoQkCtbWsZYISnJFNxewpRzVu/YLGqOfuxHSPXFpoFzFM8/gx9DLA8zKEbdb9MGJapFWnIkJ92M69j/GfOJuxYwGQJfaSiKfXxrXLzk3RpIybK+KCwiWdms7SvFZ8IC6pIDiAGxS4AHqW7kBBms+E+glKfuw2tHFHH2l4DQPAzKStLc/TWp90dFjoEDEYQ3qBO6AoAtaC I made a thinko when I asserted gcc_unreachable outside the main loop of appears_later_in_bb in my previous fix to PR 57337. It is quite possible for STMT1 to be followed by a one or more statements with the same UID till the end of the BB without encountering STMT2. Right fix is to return STMT1 outside the loop. Ok for trunk? Thanks, Easwaran 2013-05-28 Easwaran Raman PR tree-optimization/57442 * tree-ssa-reassoc.c (appears_later_in_bb): Return correct value when control exits the main loop. 2013-05-28 Easwaran Raman PR tree-optimization/57442 * gcc.dg/tree-ssa/reassoc-30.c: New testcase. Index: gcc/testsuite/gcc.dg/tree-ssa/reassoc-30.c =================================================================== --- gcc/testsuite/gcc.dg/tree-ssa/reassoc-30.c (revision 0) +++ gcc/testsuite/gcc.dg/tree-ssa/reassoc-30.c (revision 0) @@ -0,0 +1,13 @@ +/* PR tree-optimization/57442 */ +/* { dg-do compile } */ +/* { dg-options "-O1" } */ +short a; +unsigned b; +long c; +int d; + +void f(void) +{ + b = a ? : (a = b) - c + (d - (b + b)); +} + Index: gcc/tree-ssa-reassoc.c =================================================================== --- gcc/tree-ssa-reassoc.c (revision 199385) +++ gcc/tree-ssa-reassoc.c (working copy) @@ -2888,7 +2888,7 @@ appears_later_in_bb (gimple stmt1, gimple stmt2) else if (stmt == stmt2) return stmt2; } - gcc_unreachable (); + return stmt1; } /* Find the statement after which STMT must be moved so that the