From patchwork Mon Nov 8 21:22:18 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Pop X-Patchwork-Id: 70461 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 12C55B710D for ; Tue, 9 Nov 2010 08:23:09 +1100 (EST) Received: (qmail 24255 invoked by alias); 8 Nov 2010 21:23:06 -0000 Received: (qmail 24241 invoked by uid 22791); 8 Nov 2010 21:23:05 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, TW_ZJ X-Spam-Check-By: sourceware.org Received: from mail-yx0-f175.google.com (HELO mail-yx0-f175.google.com) (209.85.213.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 08 Nov 2010 21:23:00 +0000 Received: by yxe42 with SMTP id 42so3999529yxe.20 for ; Mon, 08 Nov 2010 13:22:59 -0800 (PST) Received: by 10.91.43.10 with SMTP id v10mr5840812agj.190.1289251378897; Mon, 08 Nov 2010 13:22:58 -0800 (PST) MIME-Version: 1.0 Received: by 10.91.95.8 with HTTP; Mon, 8 Nov 2010 13:22:18 -0800 (PST) From: Sebastian Pop Date: Mon, 8 Nov 2010 15:22:18 -0600 Message-ID: Subject: Fix PR46036: if-conversion problem To: GCC Patches , Richard Guenther 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, Here is a fix for PR46036 bootstrapped and tested on amd64-linux. Ok for trunk? Thanks, Sebastian From ee9d3095a33df9aa6956c9a7d8782d9bb3fad85e Mon Sep 17 00:00:00 2001 From: Sebastian Pop Date: Fri, 5 Nov 2010 16:57:00 -0500 Subject: [PATCH] Fix PR46036. 2010-11-04 Sebastian Pop PR tree-optimization/46036 * tree-if-conv.c (predicate_bbs): Call unshare_expr before add_to_dst_predicate_list. * gfortran.dg/lto/pr46036_0.f90: New. --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/lto/pr46036_0.f90 | 14 ++++++++++++++ gcc/tree-if-conv.c | 2 +- 4 files changed, 26 insertions(+), 1 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/lto/pr46036_0.f90 diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b0618ac..d0b178a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-11-04 Sebastian Pop + + PR tree-optimization/46036 + * tree-if-conv.c (predicate_bbs): Call unshare_expr before + add_to_dst_predicate_list. + 2010-11-03 Uros Bizjak PR middle-end/46292 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 89a0535..f296193 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-11-04 Sebastian Pop + + PR tree-optimization/46036 + * gfortran.dg/lto/pr46036_0.f90: New. + 2010-11-04 Jason Merrill * g++.dg/cpp0x/constexpr-access.C: New. diff --git a/gcc/testsuite/gfortran.dg/lto/pr46036_0.f90 b/gcc/testsuite/gfortran.dg/lto/pr46036_0.f90 new file mode 100644 index 0000000..558c7ed --- /dev/null +++ b/gcc/testsuite/gfortran.dg/lto/pr46036_0.f90 @@ -0,0 +1,14 @@ +! { dg-lto-do link } +! { dg-lto-options {{ -O -flto -ftree-vectorize }} } + +function no_of_edges(self) result(res) + integer(kind=kind(1)) :: edge_bit_string + integer(kind=kind(1)) :: res + integer(kind=kind(1)) :: e + do e = 0, 11 + if (.not. btest(edge_bit_string,e)) cycle + res = res + 1 + end do +end function no_of_edges + +end program diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index 2c334d9..5ee0a45 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -942,7 +942,7 @@ predicate_bbs (loop_p loop) &true_edge, &false_edge); /* If C is true, then TRUE_EDGE is taken. */ - add_to_dst_predicate_list (loop, true_edge, cond, c); + add_to_dst_predicate_list (loop, true_edge, cond, unshare_expr (c)); /* If C is false, then FALSE_EDGE is taken. */ c2 = invert_truthvalue_loc (loc, unshare_expr (c)); -- 1.7.0.4