From patchwork Mon Jul 21 10:34:15 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 372027 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]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id B622714013B for ; Mon, 21 Jul 2014 20:34:41 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:cc:subject:references :in-reply-to:content-type; q=dns; s=default; b=QGIBPW0EOFzMmLXG+ qHUkkWk4OvQEzs713KVRHKps65DbteFcn7JLYMw7OFy2o6mVk54JQN2OIZiuQeLA mduUBTZ+lXKib9Eag1fnnZ8Yo/Z8er5AZXYzOQjLn4tEd6XZb5vRQxV7NvUAXWWd WhvDBkFx/iBbiA23rW32gmk+zw= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:cc:subject:references :in-reply-to:content-type; s=default; bh=2cYiWz/1gSDO53tGIPpnqZ9 NhaM=; b=crokfrQZ8UMPHWLIuNwbclpwQkLfOclR1QSsWHlhTnv9BYlnxA9eBts lt4oFoQvRPi4166gj/fHotK0V5AK1iDKAE3n6fbaz2/C3y01s8Y1tBAtboY22HiT /5r4QbB4AFGm37sIhm9zfPtdvRUpnq/GHv8fbt5z/o///ZifaX3U= Received: (qmail 3761 invoked by alias); 21 Jul 2014 10:34:33 -0000 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 Received: (qmail 3648 invoked by uid 89); 21 Jul 2014 10:34:28 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00 autolearn=ham version=3.3.2 X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 21 Jul 2014 10:34:25 +0000 Received: from svr-orw-exc-10.mgc.mentorg.com ([147.34.98.58]) by relay1.mentorg.com with esmtp id 1X9AvE-0006jT-1z from Tom_deVries@mentor.com ; Mon, 21 Jul 2014 03:34:20 -0700 Received: from SVR-IES-FEM-01.mgc.mentorg.com ([137.202.0.104]) by SVR-ORW-EXC-10.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Mon, 21 Jul 2014 03:34:19 -0700 Received: from [127.0.0.1] (137.202.0.76) by SVR-IES-FEM-01.mgc.mentorg.com (137.202.0.104) with Microsoft SMTP Server id 14.2.247.3; Mon, 21 Jul 2014 11:34:18 +0100 Message-ID: <53CCECA7.9070607@mentor.com> Date: Mon, 21 Jul 2014 12:34:15 +0200 From: Tom de Vries User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: Uros Bizjak CC: GCC Patches , Dominique Dhumieres Subject: Re: [PATCH, i386, PR61827] Fix fuse-caller-save-xmm.c test-case References: <53CB9931.6030800@mentor.com> In-Reply-To: On 21-07-14 09:31, Uros Bizjak wrote: > On Sun, Jul 20, 2014 at 12:25 PM, Tom de Vries wrote: > >> this patch fixes the problems in test-case >> gcc.target/i386/fuse-caller-save-xmm.c reported in PR 61827. I've removed >> the checks for cfi_def_cfa_offset, which were not robust enough for the >> different configurations. >> >> Furthermore, I've: >> - added checks for all insns that handle the xmm registers, to make sure >> we're >> actually using the xmm1 register. >> - fixed the scan-assembler-not lines to allow both %esp and %rsp. > > You can use "%\[re\]?sp" here. We know that only r and e are valid. > >> - removed main, which was really only intended for the >> fuse-caller-save-xmm-run.c test-case. >> >> Tested with -m32 and -m64. > > Probably you should also add -fomit-frame-pointer, otherwise the test > (that checks for SP based address) will fail on Darwin and Solaris > that default to frame pointers. > >> OK for trunk? > > OK with the above changes. > Uros, Dominique noticed that the .LC0 check failed on darwin, since the label LC0 is used. This follow-up patch fixes that (and I see now you already Ok-ed this change). Furthermore, I've realized from the comments in the PR that for solaris/sun-as and darwin no cfi directives are generated. There are two other i386 fuse-caller-save tests which test cfi directives. The reason these tests aren't failing for solaris/sun-as and darwin like the fuse-caller-save-xmm test did, is because they test for the absence of specific cfi directives, which will always pass if no cfi directives are generated. So I've removed the cfi directive checks (and removed superfluous mains) and added tests on instructions. Tested with -m32 and -m64. OK for trunk? Thanks, - Tom 2014-07-21 Tom de Vries PR target/61827 * gcc.target/i386/fuse-caller-save-xmm.c: Allow LC0 without dot prefix for darwin in scan-assembler-times check. * gcc.target/i386/fuse-caller-save.c: Remove cfi-related scan-assembler-not checks. Add checks for insns. (main): Remove. * gcc.target/i386/fuse-caller-save-rec.c: Remove cfi-related scan-assembler-not checks. Copy checks from i386/fuse-caller-save.c. (main): Remove. diff --git a/gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c b/gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c index b30a0b4..d1441bc 100644 --- a/gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c +++ b/gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c @@ -18,14 +18,12 @@ foo (int y) return y + bar (y); } -int -main (void) -{ - return !(foo (5) == 13); -} +/* Check that no registers are saved/restored. */ +/* { dg-final { scan-assembler-not "push" } } */ +/* { dg-final { scan-assembler-not "pop" } } */ -/* Verify that no registers where saved on stack. */ -/* { dg-final { scan-assembler-not "\.cfi_offset" } } */ +/* Check that addition uses dx. */ +/* { dg-final { scan-assembler-times "addl\t%\[re\]?dx, %\[re\]?ax" 1 } } */ /* Verify that bar is self-recursive. */ /* { dg-final { scan-assembler-times "call\tbar" 2 } } */ diff --git a/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c b/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c index c639936..4211a89 100644 --- a/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c +++ b/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c @@ -17,7 +17,7 @@ foo (v2df y) /* Check presence of all insns on xmm registers. These checks are expected to pass with both -fuse-caller-save and -fno-use-caller-save. */ -/* { dg-final { scan-assembler-times "addpd\t\\.LC0.*, %xmm0" 1 } } */ +/* { dg-final { scan-assembler-times "addpd\t\\.?LC0.*, %xmm0" 1 } } */ /* { dg-final { scan-assembler-times "addpd\t%xmm1, %xmm0" 1 } } */ /* { dg-final { scan-assembler-times "movapd\t%xmm0, %xmm1" 1 } } */ diff --git a/gcc/testsuite/gcc.target/i386/fuse-caller-save.c b/gcc/testsuite/gcc.target/i386/fuse-caller-save.c index 4ec4995..7e2b11d 100644 --- a/gcc/testsuite/gcc.target/i386/fuse-caller-save.c +++ b/gcc/testsuite/gcc.target/i386/fuse-caller-save.c @@ -16,12 +16,9 @@ foo (int y) return y + bar (y); } -int -main (void) -{ - return !(foo (5) == 13); -} - -/* { dg-final { scan-assembler-not "\.cfi_def_cfa_offset" } } */ -/* { dg-final { scan-assembler-not "\.cfi_offset" } } */ +/* Check that no registers are saved/restored. */ +/* { dg-final { scan-assembler-not "push" } } */ +/* { dg-final { scan-assembler-not "pop" } } */ +/* Check that addition uses dx. */ +/* { dg-final { scan-assembler-times "addl\t%\[re\]?dx, %\[re\]?ax" 1 } } */