From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13507 invoked by alias); 9 Aug 2007 13:40:54 -0000 Received: (qmail 13319 invoked by uid 22791); 9 Aug 2007 13:40:53 -0000 X-Spam-Check-By: sourceware.org Received: from mtagate1.de.ibm.com (HELO mtagate1.de.ibm.com) (195.212.29.150) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 09 Aug 2007 13:40:44 +0000 Received: from d12nrmr1607.megacenter.de.ibm.com (d12nrmr1607.megacenter.de.ibm.com [9.149.167.49]) by mtagate1.de.ibm.com (8.13.8/8.13.8) with ESMTP id l79DefUQ724378 for ; Thu, 9 Aug 2007 13:40:41 GMT Received: from d12av04.megacenter.de.ibm.com (d12av04.megacenter.de.ibm.com [9.149.165.229]) by d12nrmr1607.megacenter.de.ibm.com (8.13.8/8.13.8/NCO v8.4) with ESMTP id l79DefBM2195468 for ; Thu, 9 Aug 2007 15:40:41 +0200 Received: from d12av04.megacenter.de.ibm.com (loopback [127.0.0.1]) by d12av04.megacenter.de.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id l79Defun008963 for ; Thu, 9 Aug 2007 15:40:41 +0200 Received: from d12ml062.megacenter.de.ibm.com (d12ml062.megacenter.de.ibm.com [9.149.166.219]) by d12av04.megacenter.de.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id l79DefOP008960 for ; Thu, 9 Aug 2007 15:40:41 +0200 To: gcc-patches@gcc.gnu.org MIME-Version: 1.0 Subject: [PATCH] Handel REG_LIBCALL note after split X-Mailer: Lotus Notes Release 7.0 HF277 June 21, 2006 Message-ID: From: Sa Liu Date: Thu, 09 Aug 2007 13:40:00 -0000 Content-Type: text/plain; charset="US-ASCII" 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 X-SW-Source: 2007-08/txt/msg00571.txt.bz2 This patch relink the insns with REG_LIBCALL note and with REG_RETVAL note after split. The discussion in GCC mailing list can be found here: http://gcc.gnu.org/ml/gcc/2007-07/msg00925.html The patch has been tested on spu with gcc test suits and got no regression. Is it now OK for the mainline? Thanks, Sa Index: gcc/emit-rtl.c =================================================================== --- gcc.orig/emit-rtl.c +++ gcc/emit-rtl.c @@ -3129,7 +3129,7 @@ try_split (rtx pat, rtx trial, int last) rtx before = PREV_INSN (trial); rtx after = NEXT_INSN (trial); int has_barrier = 0; - rtx tem; + rtx tem, note_retval; rtx note, seq; int probability; rtx insn_last, insn; @@ -3264,6 +3264,16 @@ try_split (rtx pat, rtx trial, int last) } break; #endif + case REG_LIBCALL: + /* Relink the insns with REG_LIBCALL note and with REG_RETVAL note + after split. */ + REG_NOTES (insn_last) + = gen_rtx_EXPR_LIST (REG_LIBCALL, + XEXP (note, 0), + REG_NOTES (insn_last)); + note_retval = find_reg_note (XEXP (note, 0), REG_RETVAL, NULL); + XEXP (note_retval, 0) = insn_last; + break; default: break;