From patchwork Tue Dec 14 07:24:48 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Pop X-Patchwork-Id: 75471 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]) by ozlabs.org (Postfix) with SMTP id B60B3B6F2B for ; Tue, 14 Dec 2010 18:26:48 +1100 (EST) Received: (qmail 12255 invoked by alias); 14 Dec 2010 07:26:47 -0000 Received: (qmail 12239 invoked by uid 22791); 14 Dec 2010 07:26:46 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-gx0-f176.google.com (HELO mail-gx0-f176.google.com) (209.85.161.176) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 14 Dec 2010 07:26:42 +0000 Received: by gxk4 with SMTP id 4so206007gxk.21 for ; Mon, 13 Dec 2010 23:26:40 -0800 (PST) Received: by 10.236.109.139 with SMTP id s11mr10353427yhg.81.1292311600354; Mon, 13 Dec 2010 23:26:40 -0800 (PST) Received: from napoca (adsl-76-244-77-0.dsl.austtx.sbcglobal.net [76.244.77.0]) by mx.google.com with ESMTPS id n21sm4595309yha.45.2010.12.13.23.26.38 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 13 Dec 2010 23:26:39 -0800 (PST) Received: by napoca (sSMTP sendmail emulation); Tue, 14 Dec 2010 01:26:36 -0600 From: Sebastian Pop To: gcc-patches@gcc.gnu.org Cc: rguenther@suse.de, Sebastian Pop Subject: [PATCH] Fix PR46845: handle scop parameters before scev analysis. Date: Tue, 14 Dec 2010 01:24:48 -0600 Message-Id: <1292311488-31351-1-git-send-email-sebpop@gmail.com> X-IsSubscribed: yes 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 Hi, With this patch, we now handle scop parameters before triggering the scev analysis. I am currently testing this patch on amd64-linux. Ok for trunk after it passes regtest? Thanks, Sebastian 2010-12-14 Sebastian Pop PR tree-optimization/46845 * sese.c (scalar_evolution_in_region): Handle scop parameters before scev analysis. * gcc.dg/graphite/id-pr46845.c: New. --- gcc/ChangeLog | 6 ++++++ gcc/sese.c | 8 +++++--- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/graphite/id-pr46845.c | 17 +++++++++++++++++ 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/graphite/id-pr46845.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0389806..b906953 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-12-14 Sebastian Pop + + PR tree-optimization/46845 + * sese.c (scalar_evolution_in_region): Handle scop parameters + before scev analysis. + 2010-12-10 Sebastian Pop PR tree-optimization/43023 diff --git a/gcc/sese.c b/gcc/sese.c index 3bf6bea..076f07a 100644 --- a/gcc/sese.c +++ b/gcc/sese.c @@ -801,14 +801,16 @@ scalar_evolution_in_region (sese region, loop_p loop, tree t) struct loop *def_loop; basic_block before = block_before_sese (region); + /* SCOP parameters. */ + if (TREE_CODE (t) == SSA_NAME + && !defined_in_sese_p (t, region)) + return t; + if (TREE_CODE (t) != SSA_NAME || loop_in_sese_p (loop, region)) return instantiate_scev (before, loop, analyze_scalar_evolution (loop, t)); - if (!defined_in_sese_p (t, region)) - return t; - def = SSA_NAME_DEF_STMT (t); def_loop = loop_containing_stmt (def); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7bb46f3..48a26ba 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-12-14 Sebastian Pop + + PR tree-optimization/46845 + * gcc.dg/graphite/id-pr46845.c: New. + 2010-12-10 Sebastian Pop PR tree-optimization/43023 diff --git a/gcc/testsuite/gcc.dg/graphite/id-pr46845.c b/gcc/testsuite/gcc.dg/graphite/id-pr46845.c new file mode 100644 index 0000000..f4da78e --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/id-pr46845.c @@ -0,0 +1,17 @@ +/* { dg-options "-O2 -ffast-math -fgraphite-identity -w -Wno-psabi" { target { i?86-*-* x86_64-*-* } } } */ + +typedef float V2SF __attribute__ ((vector_size (128))); + +V2SF +foo (int x, V2SF a) +{ + V2SF b; + if (x & 42) + b = a; + else + b = a + (V2SF) {1.0f/0.0f - 1.0f/0.0f, 1.0f/0.0f - 1.0f/0.0f}; + while (x--) + a += b; + + return a; +}