From patchwork Fri Aug 19 16:28:25 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 110695 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 3C47BB6F68 for ; Sat, 20 Aug 2011 02:28:39 +1000 (EST) Received: (qmail 15556 invoked by alias); 19 Aug 2011 16:28:31 -0000 Received: (qmail 15535 invoked by uid 22791); 19 Aug 2011 16:28:30 -0000 X-SWARE-Spam-Status: No, hits=-1.6 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_FAIL, TW_TM X-Spam-Check-By: sourceware.org Received: from smtp-vbr15.xs4all.nl (HELO smtp-vbr15.xs4all.nl) (194.109.24.35) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 19 Aug 2011 16:28:15 +0000 Received: from [192.168.1.68] (teejay.xs4all.nl [213.84.119.160]) (authenticated bits=0) by smtp-vbr15.xs4all.nl (8.13.8/8.13.8) with ESMTP id p7JGS74b025909 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 19 Aug 2011 18:28:13 +0200 (CEST) (envelope-from vries@codesourcery.com) Message-ID: <4E4E8F29.3060907@codesourcery.com> Date: Fri, 19 Aug 2011 18:28:25 +0200 From: Tom de Vries User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.18) Gecko/20110617 Lightning/1.0b2 Thunderbird/3.1.11 MIME-Version: 1.0 To: Richard Guenther CC: Steven Bosscher , gcc-patches@gcc.gnu.org Subject: Re: [PATCH, PR43864] Gimple level duplicate block cleanup - test cases. References: <4DEF4408.4040001@codesourcery.com> <4DEF44C1.4070800@codesourcery.com> <4E232B0F.5040804@codesourcery.com> In-Reply-To: <4E232B0F.5040804@codesourcery.com> 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 On 07/17/2011 08:33 PM, Tom de Vries wrote: > Updated version. > > On 06/08/2011 11:45 AM, Tom de Vries wrote: >> On 06/08/2011 11:42 AM, Tom de Vries wrote: >> >>> I'll send the patch with the testcases in a separate email. >> > 2 extra testcases added. OK for trunk? Thanks, - Tom 2011-08-19 Tom de Vries PR middle-end/43864 * gcc.dg/fold-compare-2.c (dg-options): Add -fno-tree-tail-merge. * gcc/testsuite/gcc.dg/uninit-pred-2_c.c: Same. * gcc.dg/pr43864.c: New test. * gcc.dg/pr43864-2.c: Same. * gcc.dg/pr43864-3.c: Same. * gcc.dg/pr43864-4.c: Same. Index: gcc/testsuite/gcc.dg/pr43864-4.c =================================================================== --- gcc/testsuite/gcc.dg/pr43864-4.c (revision 0) +++ gcc/testsuite/gcc.dg/pr43864-4.c (revision 0) @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +/* Different stmt order. */ + +int f(int c, int b, int d) +{ + int r, r2, e; + + if (c) + { + r = b + d; + r2 = d - b; + } + else + { + r2 = d - b; + e = d + b; + r = e; + } + + return r - r2; +} + +/* { dg-final { scan-tree-dump-times "if " 0 "pre"} } */ +/* { dg-final { scan-tree-dump-times "_.*\\\+.*_" 1 "pre"} } */ +/* { dg-final { scan-tree-dump-times " - " 2 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ Index: gcc/testsuite/gcc.dg/fold-compare-2.c =================================================================== --- gcc/testsuite/gcc.dg/fold-compare-2.c (revision 176554) +++ gcc/testsuite/gcc.dg/fold-compare-2.c (working copy) @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -fdump-tree-vrp" } */ +/* { dg-options "-O2 -fno-tree-tail-merge -fdump-tree-vrp" } */ extern void abort (void); Index: gcc/testsuite/gcc.dg/uninit-pred-2_c.c =================================================================== --- gcc/testsuite/gcc.dg/uninit-pred-2_c.c (revision 176554) +++ gcc/testsuite/gcc.dg/uninit-pred-2_c.c (working copy) @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-Wuninitialized -O2" } */ +/* { dg-options "-Wuninitialized -O2 -fno-tree-tail-merge" } */ int g; void bar (void); Index: gcc/testsuite/gcc.dg/pr43864.c =================================================================== --- gcc/testsuite/gcc.dg/pr43864.c (revision 0) +++ gcc/testsuite/gcc.dg/pr43864.c (revision 0) @@ -0,0 +1,35 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +extern void foo (char*, int); +extern void mysprintf (char *, char *); +extern void myfree (void *); +extern int access (char *, int); +extern int fopen (char *, int); + +char * +hprofStartupp (char *outputFileName, char *ctx) +{ + char fileName[1000]; + int fp; + mysprintf (fileName, outputFileName); + if (access (fileName, 1) == 0) + { + myfree (ctx); + return 0; + } + + fp = fopen (fileName, 0); + if (fp == 0) + { + myfree (ctx); + return 0; + } + + foo (outputFileName, fp); + + return ctx; +} + +/* { dg-final { scan-tree-dump-times "myfree \\(" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ Index: gcc/testsuite/gcc.dg/pr43864-2.c =================================================================== --- gcc/testsuite/gcc.dg/pr43864-2.c (revision 0) +++ gcc/testsuite/gcc.dg/pr43864-2.c (revision 0) @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +int +f (int c, int b, int d) +{ + int r, e; + + if (c) + r = b + d; + else + { + e = b + d; + r = e; + } + + return r; +} + +/* { dg-final { scan-tree-dump-times "if " 0 "pre"} } */ +/* { dg-final { scan-tree-dump-times "_.*\\\+.*_" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ Index: gcc/testsuite/gcc.dg/pr43864-3.c =================================================================== --- gcc/testsuite/gcc.dg/pr43864-3.c (revision 0) +++ gcc/testsuite/gcc.dg/pr43864-3.c (revision 0) @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +/* Commutative case. */ + +int f(int c, int b, int d) +{ + int r, e; + + if (c) + r = b + d; + else + { + e = d + b; + r = e; + } + + return r; +} + +/* { dg-final { scan-tree-dump-times "if " 0 "pre"} } */ +/* { dg-final { scan-tree-dump-times "_.*\\\+.*_" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */