From patchwork Wed Nov 23 18:13:23 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Bergner X-Patchwork-Id: 698461 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 3tP9Sn0sPmz9t3K for ; Thu, 24 Nov 2016 05:13:44 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="SygjkpNG"; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:to:cc :from:subject:date:mime-version:content-type :content-transfer-encoding:message-id; q=dns; s=default; b=xbRgk aBSX/azGpCA8wg7WZBDNzu7W/VZfPY2/HTZKDvVi0ct5i3Chuy/P4/eQ73Gny/cp lAr4T8dPnA3vv7595/QaFog8bgPDDRPr41JqqkTf+/b4L7gVjSAN1ejN6mvkPF7w crpdiY1TOWUFDTpKWKRAu14r/nOBYqYeWdOHMA= 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:to:cc :from:subject:date:mime-version:content-type :content-transfer-encoding:message-id; s=default; bh=0clTK90in87 8JxF4X2BhmivvzCU=; b=SygjkpNGAMnrgzW/jqVglf0+bnn2DPr7Q5nag7kemlJ SMdIH43EMcAHF3IBuhqkZJwDLQlBiP2wGMsNNm0zRyB+WNBZZ/4rlQjdSh1hT/WS jnBVX3sUSLnB4bFn73DNaGT5/IZ0JWrrKpw8YBjBmbfooHIg9EeVTglgDSlapS/Y = Received: (qmail 83068 invoked by alias); 23 Nov 2016 18:13:34 -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 83054 invoked by uid 89); 23 Nov 2016 18:13:33 -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, KAM_ASCII_DIVIDERS, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=no version=3.3.2 spammy=(unknown), him, his X-HELO: mx0a-001b2d01.pphosted.com Received: from mx0b-001b2d01.pphosted.com (HELO mx0a-001b2d01.pphosted.com) (148.163.158.5) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 23 Nov 2016 18:13:30 +0000 Received: from pps.filterd (m0098413.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.17/8.16.0.17) with SMTP id uANI8sQU015172 for ; Wed, 23 Nov 2016 13:13:28 -0500 Received: from e36.co.us.ibm.com (e36.co.us.ibm.com [32.97.110.154]) by mx0b-001b2d01.pphosted.com with ESMTP id 26wdwu93py-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 23 Nov 2016 13:13:28 -0500 Received: from localhost by e36.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 23 Nov 2016 11:13:27 -0700 Received: from d03dlp03.boulder.ibm.com (9.17.202.179) by e36.co.us.ibm.com (192.168.1.136) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 23 Nov 2016 11:13:25 -0700 Received: from b03cxnp07029.gho.boulder.ibm.com (b03cxnp07029.gho.boulder.ibm.com [9.17.130.16]) by d03dlp03.boulder.ibm.com (Postfix) with ESMTP id 94A1A19D8041; Wed, 23 Nov 2016 11:12:46 -0700 (MST) Received: from b03ledav003.gho.boulder.ibm.com (b03ledav003.gho.boulder.ibm.com [9.17.130.234]) by b03cxnp07029.gho.boulder.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id uANIDO1x12845498; Wed, 23 Nov 2016 11:13:24 -0700 Received: from b03ledav003.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D3EE36A03D; Wed, 23 Nov 2016 11:13:24 -0700 (MST) Received: from otta.local (unknown [9.85.128.109]) by b03ledav003.gho.boulder.ibm.com (Postfix) with ESMTP id 1058E6A03C; Wed, 23 Nov 2016 11:13:23 -0700 (MST) To: GCC Patches Cc: Segher Boessenkool , David Edelsohn , Joseph Myers From: Peter Bergner Subject: [PATCH, rs6000] Fix PR78458, LRA ICE building libgcc for powerpc-linux-gnuspe e500v2 Date: Wed, 23 Nov 2016 12:13:23 -0600 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16112318-0020-0000-0000-00000A5986DA X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00006129; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000191; SDB=6.00784447; UDB=6.00378949; IPR=6.00562062; BA=6.00004908; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00013418; XFM=3.00000011; UTC=2016-11-23 18:13:27 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16112318-0021-0000-0000-00005787EE6B Message-Id: X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-11-23_04:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1609300000 definitions=main-1611230302 X-IsSubscribed: yes PR78458 shows a problem in LRA spilling caused by HARD_REGNO_CALLER_SAVE_MODE() returning a bogus mode (IFmode). This patch solves the problem by just returning MODE if MODE is wide enough to save and restore NREGS itself. This patch passed bootstrap and regtesting on powerpc64le-linux as well as on powerpc64-linux (testsuite run in both 32-bit and 64-bit modes). Joseph has confirmed it fixes his ICE and gets him further in his toolchain build (now ICEs in glibc), which he has separate patches for. Joseph, I copied the testsuite preamble from another SPE test case. Does it look correct to you to catch the bug? Assuming the test case is correct, is this ok for trunk? Peter gcc/ PR target/78458 * config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Return MODE if it is at least NREGS wide. gcc/testsuite/ PR target/78458 * gcc.target/powerpc/pr78458.c: New. Index: gcc/config/rs6000/rs6000.h =================================================================== --- gcc/config/rs6000/rs6000.h (revision 241976) +++ gcc/config/rs6000/rs6000.h (working copy) @@ -1279,9 +1279,11 @@ enum data_align { align_abi, align_opt, enough space to account for vectors in FP regs. However, TFmode/TDmode should not use VSX instructions to do a caller save. */ #define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \ - (TARGET_VSX \ - && ((MODE) == VOIDmode || ALTIVEC_OR_VSX_VECTOR_MODE (MODE)) \ - && FP_REGNO_P (REGNO) \ + (NREGS <= rs6000_hard_regno_nregs[MODE][REGNO] \ + ? MODE \ + : TARGET_VSX \ + && ((MODE) == VOIDmode || ALTIVEC_OR_VSX_VECTOR_MODE (MODE)) \ + && FP_REGNO_P (REGNO) \ ? V2DFmode \ : TARGET_E500_DOUBLE && (MODE) == SImode \ ? SImode \ Index: gcc/testsuite/gcc.target/powerpc/pr78458.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/pr78458.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/pr78458.c (working copy) @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-mcpu=8548 -mspe -mabi=spe -mlra" } */ +/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */ + +extern void bar (void); +long double +pr78458 (long double p1) +{ + bar (); + asm volatile ("# clobbers" ::: + "r14", "r15", "r16", "r17", "r18", "r19", + "r20", "r21", "r22", "r23", "r24", "r25", + "r26", "r27", "r28", "r29", "r30", "r31"); + return p1; +}