From patchwork Wed Nov 3 15:52:25 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Pop X-Patchwork-Id: 70030 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 3A5FA1007D2 for ; Thu, 4 Nov 2010 02:53:20 +1100 (EST) Received: (qmail 931 invoked by alias); 3 Nov 2010 15:53:13 -0000 Received: (qmail 922 invoked by uid 22791); 3 Nov 2010 15:53:11 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-yw0-f47.google.com (HELO mail-yw0-f47.google.com) (209.85.213.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 03 Nov 2010 15:53:07 +0000 Received: by ywo7 with SMTP id 7so12512ywo.20 for ; Wed, 03 Nov 2010 08:53:05 -0700 (PDT) Received: by 10.150.201.4 with SMTP id y4mr1501102ybf.176.1288799585155; Wed, 03 Nov 2010 08:53:05 -0700 (PDT) Received: from napoca ([163.181.251.115]) by mx.google.com with ESMTPS id q41sm9834035ybk.13.2010.11.03.08.53.03 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 03 Nov 2010 08:53:04 -0700 (PDT) Received: by napoca (sSMTP sendmail emulation); Wed, 03 Nov 2010 10:53:02 -0500 From: Sebastian Pop To: gcc-patches@gcc.gnu.org Cc: rguenther@suse.de, Sebastian Pop Subject: [PATCH 2/3] if-convert even when the data dependences cannot be computed. Date: Wed, 3 Nov 2010 10:52:25 -0500 Message-Id: <1288799546-29668-2-git-send-email-sebpop@gmail.com> In-Reply-To: References: 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 2010-10-20 Sebastian Pop * tree-if-conv.c (if_convertible_loop_p_1): Do not call compute_data_dependences_for_loop. (if_convertible_loop_p): Do not free refs and ddrs. --- gcc/ChangeLog | 6 ++++++ gcc/tree-if-conv.c | 24 +++--------------------- 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0f58882..3ceb7b6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2010-10-20 Sebastian Pop + * tree-if-conv.c (if_convertible_loop_p_1): Do not call + compute_data_dependences_for_loop. + (if_convertible_loop_p): Do not free refs and ddrs. + +2010-10-20 Sebastian Pop + PR tree-optimization/46029 * doc/invoke.texi (-ftree-loop-if-convert-stores): Update description. * tree-if-conv.c (has_unaligned_memory_refs): New. diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index 9fc6190..5b941af 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -855,24 +855,15 @@ predicate_bbs (loop_p loop) } /* Return true when LOOP is if-convertible. This is a helper function - for if_convertible_loop_p. REFS and DDRS are initialized and freed - in if_convertible_loop_p. */ + for if_convertible_loop_p. */ static bool -if_convertible_loop_p_1 (struct loop *loop, - VEC (data_reference_p, heap) **refs, - VEC (ddr_p, heap) **ddrs) +if_convertible_loop_p_1 (struct loop *loop) { bool res; unsigned int i; basic_block exit_bb = NULL; - /* Don't if-convert the loop when the data dependences cannot be - computed: the loop won't be vectorized in that case. */ - res = compute_data_dependences_for_loop (loop, true, refs, ddrs); - if (!res) - return false; - calculate_dominance_info (CDI_DOMINATORS); /* Allow statements that can be handled during if-conversion. */ @@ -934,9 +925,6 @@ if_convertible_loop_p (struct loop *loop) { edge e; edge_iterator ei; - bool res = false; - VEC (data_reference_p, heap) *refs; - VEC (ddr_p, heap) *ddrs; /* Handle only innermost loop. */ if (!loop || loop->inner) @@ -968,13 +956,7 @@ if_convertible_loop_p (struct loop *loop) if (loop_exit_edge_p (loop, e)) return false; - refs = VEC_alloc (data_reference_p, heap, 5); - ddrs = VEC_alloc (ddr_p, heap, 25); - res = if_convertible_loop_p_1 (loop, &refs, &ddrs); - - free_data_refs (refs); - free_dependence_relations (ddrs); - return res; + return if_convertible_loop_p_1 (loop); } /* Basic block BB has two predecessors. Using predecessor's bb