From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11435 invoked by alias); 29 Nov 2017 15:11:48 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 11420 invoked by uid 89); 29 Nov 2017 15:11:47 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-10.7 required=5.0 tests=BAYES_00,GIT_PATCH_2,GIT_PATCH_3,KAM_LAZY_DOMAIN_SECURITY,KB_WAM_FROM_NAME_SINGLEWORD,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=kindly X-HELO: foss.arm.com Received: from usa-sjc-mx-foss1.foss.arm.com (HELO foss.arm.com) (217.140.101.70) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 29 Nov 2017 15:11:45 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 16D0B1435; Wed, 29 Nov 2017 07:11:44 -0800 (PST) Received: from [10.2.207.77] (e100706-lin.cambridge.arm.com [10.2.207.77]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1D54B3F236; Wed, 29 Nov 2017 07:11:42 -0800 (PST) Message-ID: <5A1ECE2D.9060608@foss.arm.com> Date: Wed, 29 Nov 2017 16:15:00 -0000 From: Kyrill Tkachov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: Jakub Jelinek , Rainer Orth , Mike Stump CC: gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Fix PR tree-optimization/83195 testcase for arm References: <20171129081851.GV2353@tucnak> In-Reply-To: <20171129081851.GV2353@tucnak> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2017-11/txt/msg02501.txt.bz2 Hi Jakub, On 29/11/17 08:18, Jakub Jelinek wrote: > Hi! > > The pr82929.c testcase uses store_merge effective target, which is > int32plus && nonstrict_align. Unfortunately, arm is handled for > nonstrict_align wierdly, although it has STRICT_ALIGNMENT 1, it is sometimes > considered nonstrict_align (the only exception apparently). > > Now, the testcase really needs a non-strict alignment target where > STRICT_ALIGNMENT is 0, otherwise the optimization it tests is not > beneficial. So, the following patch stops testing it on arm, and adds > another test where the pointers are guaranteed to be aligned and thus we > can test for the optimization even on non-strict alignment targets. > > Bootstrapped/regtested on x86_64-linux and i686-linux, tested by hand using > a cross-compiler to arm, ok for trunk? > > 2017-11-29 Jakub Jelinek > > PR tree-optimization/83195 > * gcc.dg/pr82929.c: Don't check for "Merging successful" on arm. > * gcc.dg/pr82929-2.c: New test. > > --- gcc/testsuite/gcc.dg/pr82929.c.jj 2017-11-10 15:42:39.000000000 +0100 > +++ gcc/testsuite/gcc.dg/pr82929.c 2017-11-28 17:50:43.705221829 +0100 > @@ -15,4 +15,4 @@ foo (short *p, short *q, short *r) > p[1] = e & f; > } > > -/* { dg-final { scan-tree-dump-times "Merging successful" 1 "store-merging" } } */ > +/* { dg-final { scan-tree-dump-times "Merging successful" 1 "store-merging" { target { ! arm*-*-* } } } } */ > --- gcc/testsuite/gcc.dg/pr82929-2.c.jj 2017-11-28 17:47:41.858409094 +0100 > +++ gcc/testsuite/gcc.dg/pr82929-2.c 2017-11-28 17:48:55.264526160 +0100 > @@ -0,0 +1,21 @@ > +/* PR tree-optimization/82929 */ > +/* { dg-do compile { target store_merge } } */ > +/* { dg-options "-O2 -fdump-tree-store-merging" } */ > + > +void > +foo (short *p, short *q, short *r) > +{ > + p = __builtin_assume_aligned (p, __alignof__ (int)); > + q = __builtin_assume_aligned (q, __alignof__ (int)); > + r = __builtin_assume_aligned (r, __alignof__ (int)); > + short a = q[0]; > + short b = q[1]; > + short c = ~a; > + short d = r[0]; > + short e = r[1]; > + short f = ~b; > + p[0] = c & d; > + p[1] = e & f; > +} > + > +/* { dg-final { scan-tree-dump-times "Merging successful" 1 "store-merging" } } */ Sudi has kindly tried it out and the new test passes on arm, so this patch is ok from an arm perspective. Thanks for fixing this, Kyrill > Jakub