From patchwork Sun Mar 20 08:01:26 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ramana Radhakrishnan X-Patchwork-Id: 680 Return-Path: Delivered-To: unknown Received: from imap.gmail.com (74.125.159.109) by localhost6.localdomain6 with IMAP4-SSL; 08 Jun 2011 14:44:40 -0000 Delivered-To: patches@linaro.org Received: by 10.220.28.198 with SMTP id n6cs90374vcc; Sun, 20 Mar 2011 01:01:19 -0700 (PDT) Received: by 10.216.67.194 with SMTP id j44mr2890142wed.41.1300608078213; Sun, 20 Mar 2011 01:01:18 -0700 (PDT) Received: from mail-wy0-f178.google.com (mail-wy0-f178.google.com [74.125.82.178]) by mx.google.com with ESMTPS id r57si9918148wes.166.2011.03.20.01.01.16 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 20 Mar 2011 01:01:17 -0700 (PDT) Received-SPF: neutral (google.com: 74.125.82.178 is neither permitted nor denied by best guess record for domain of ramana.radhakrishnan@linaro.org) client-ip=74.125.82.178; Authentication-Results: mx.google.com; spf=neutral (google.com: 74.125.82.178 is neither permitted nor denied by best guess record for domain of ramana.radhakrishnan@linaro.org) smtp.mail=ramana.radhakrishnan@linaro.org Received: by wyj26 with SMTP id 26so5700790wyj.37 for ; Sun, 20 Mar 2011 01:01:16 -0700 (PDT) Received: by 10.227.159.69 with SMTP id i5mr2957464wbx.133.1300608076074; Sun, 20 Mar 2011 01:01:16 -0700 (PDT) Received: from [192.168.1.108] (66.37.187.81.in-addr.arpa [81.187.37.66]) by mx.google.com with ESMTPS id o23sm2185541wbc.44.2011.03.20.01.01.14 (version=SSLv3 cipher=OTHER); Sun, 20 Mar 2011 01:01:15 -0700 (PDT) Message-ID: <4D85B456.6060705@linaro.org> Date: Sun, 20 Mar 2011 08:01:26 +0000 From: Ramana Radhakrishnan User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.14) Gecko/20110223 Thunderbird/3.1.8 MIME-Version: 1.0 To: gcc-patches CC: patches@linaro.org Subject: [Patch ARM] PR48203 Don't split call from it's CALL_ARG_LOCATION note. Hi, The attached patch fixes PR48203 for ARM by not splitting the call from it's call_arg_location note while emitting literal pools. This is similar to the patch for s390 and I notice one for sh that fixes a similar issue. The other patch in the audit trail by Jakub is needed to fix up the issue with ICE in mem_loc_descriptor which also shows up in the testsuite runs if the attached patch is tested alone. Committed after testruns on qemu using cross-builds on armv7-a and verifying that bootstrap is restored. cheers Ramana 2011-03-20 Ramana Radhakrishnan PR debug/48023 * config/arm/arm.c (create_fix_barrier): Do not emit a minipool between a call and its CALL_ARG_LOCATION note. Index: gcc/config/arm/arm.c =================================================================== --- gcc/config/arm/arm.c (revision 171192) +++ gcc/config/arm/arm.c (working copy) @@ -12022,6 +12022,16 @@ /* Make sure that we found a place to insert the jump. */ gcc_assert (selected); + /* Make sure we do not split a call and its corresponding + CALL_ARG_LOCATION note. */ + if (CALL_P (selected)) + { + rtx next = NEXT_INSN (selected); + if (next && NOTE_P (next) + && NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION) + selected = next; + } + /* Create a new JUMP_INSN that branches around a barrier. */ from = emit_jump_insn_after (gen_jump (label), selected); JUMP_LABEL (from) = label;