From patchwork Thu Nov 4 16:15:48 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Jelinek X-Patchwork-Id: 70142 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 094681007D2 for ; Fri, 5 Nov 2010 03:16:04 +1100 (EST) Received: (qmail 29366 invoked by alias); 4 Nov 2010 16:16:00 -0000 Received: (qmail 29356 invoked by uid 22791); 4 Nov 2010 16:15:58 -0000 X-SWARE-Spam-Status: No, hits=-6.2 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_HI, SPF_HELO_PASS, TW_OV, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 04 Nov 2010 16:15:53 +0000 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id oA4GFowi010138 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 4 Nov 2010 12:15:50 -0400 Received: from tyan-ft48-01.lab.bos.redhat.com (tyan-ft48-01.lab.bos.redhat.com [10.16.42.4]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id oA4GFnQB032080 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 4 Nov 2010 12:15:50 -0400 Received: from tyan-ft48-01.lab.bos.redhat.com (localhost.localdomain [127.0.0.1]) by tyan-ft48-01.lab.bos.redhat.com (8.14.4/8.14.4) with ESMTP id oA4GFn07007116; Thu, 4 Nov 2010 17:15:49 +0100 Received: (from jakub@localhost) by tyan-ft48-01.lab.bos.redhat.com (8.14.4/8.14.4/Submit) id oA4GFmbR007114; Thu, 4 Nov 2010 17:15:48 +0100 Date: Thu, 4 Nov 2010 17:15:48 +0100 From: Jakub Jelinek To: David Edelsohn , Ulrich Weigand , Andreas Krebbel Cc: gcc-patches@gcc.gnu.org Subject: [PATCH] Fix __builtin_va_start expansion after MEM_REF changes on ppc*/spu/s390* (PR target/46234) Message-ID: <20101104161548.GW29412@tyan-ft48-01.lab.bos.redhat.com> Reply-To: Jakub Jelinek MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) 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! While build_va_arg_indirect_ref is fine in va_arg gimplification, in *_va_start expansion it is wrong, because the expander now no longer handles INDIRECT_REF. Fixed by calling build_simple_mem_ref instead, which is what other targets are now doing. Pat has bootstrapped/regtested this on PowerPC and Andreas tested it on s390*. Ok for trunk? 2010-11-04 Jakub Jelinek PR target/46234 * config/rs6000/rs6000.c (rs6000_va_start): Use build_simple_mem_ref instead of build_va_arg_indirect_ref. * config/spu/spu.c (spu_va_start): Likewise. * config/s390/s390.c (s390_va_start): Likewise. Jakub --- gcc/config/rs6000/rs6000.c.jj 2010-11-03 16:58:31.000000000 +0100 +++ gcc/config/rs6000/rs6000.c 2010-11-03 18:15:24.000000000 +0100 @@ -9252,7 +9252,7 @@ rs6000_va_start (tree valist, rtx nextar f_ovf = DECL_CHAIN (f_res); f_sav = DECL_CHAIN (f_ovf); - valist = build_va_arg_indirect_ref (valist); + valist = build_simple_mem_ref (valist); gpr = build3 (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE); fpr = build3 (COMPONENT_REF, TREE_TYPE (f_fpr), unshare_expr (valist), f_fpr, NULL_TREE); --- gcc/config/spu/spu.c.jj 2010-11-01 09:06:42.000000000 +0100 +++ gcc/config/spu/spu.c 2010-11-03 18:16:08.000000000 +0100 @@ -4154,7 +4154,7 @@ spu_va_start (tree valist, rtx nextarg) f_args = TYPE_FIELDS (TREE_TYPE (va_list_type_node)); f_skip = DECL_CHAIN (f_args); - valist = build_va_arg_indirect_ref (valist); + valist = build_simple_mem_ref (valist); args = build3 (COMPONENT_REF, TREE_TYPE (f_args), valist, f_args, NULL_TREE); skip = --- gcc/config/s390/s390.c.jj 2010-11-01 09:06:42.000000000 +0100 +++ gcc/config/s390/s390.c 2010-11-03 18:15:47.000000000 +0100 @@ -8719,7 +8719,7 @@ s390_va_start (tree valist, rtx nextarg f_ovf = DECL_CHAIN (f_fpr); f_sav = DECL_CHAIN (f_ovf); - valist = build_va_arg_indirect_ref (valist); + valist = build_simple_mem_ref (valist); gpr = build3 (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE); fpr = build3 (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE); ovf = build3 (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE);