From patchwork Wed Feb 15 22:18:23 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Iyer, Balaji V" X-Patchwork-Id: 141419 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 DE13B1007D4 for ; Thu, 16 Feb 2012 09:19:05 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1329949146; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Received:From:To:Subject:Date:Message-ID:Content-Type: MIME-Version:Mailing-List:Precedence:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:Sender:Delivered-To; bh=wLnz/TJ pnK//eN7gyPNtgjyX5q0=; b=NQo9Hu5HwRp4QYW+rVhTUapcSES23fWA8uhYyjA 0iXnKKrOOtKi6TndrO6Po97vxa9+LqGbmYBG/w4LnT12gdulEXQ/qAG571i9Ml+d rC2JVOdE2eBWWAZnUmQrmZEiWYIm+Z4VbPEVsmd1uKV3+iqzyBe4qUI1D2IW3IyR 2V8M= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:X-ExtLoop1:Received:Received:Received:From:To:Subject:Date:Message-ID:Content-Type:MIME-Version:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=Tu5nGqJfaltxQaQdpM+cKy/btANpgAPc9JEHWYxODIyBFK76ot6lABqfRnk3mC vrWHJojBoS+kR1xDyV0lQll0WZuUhW2LbkhYgcHw5oVKLBZAWLbZ/yr3OS2JzahA hXbAzgBtMV4mCyaHtug+Ks2RfCRQzRChBP5q6o4aMh+nE=; Received: (qmail 23990 invoked by alias); 15 Feb 2012 22:19:02 -0000 Received: (qmail 23975 invoked by uid 22791); 15 Feb 2012 22:19:00 -0000 X-SWARE-Spam-Status: No, hits=-4.7 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mga14.intel.com (HELO mga14.intel.com) (143.182.124.37) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 15 Feb 2012 22:18:26 +0000 Received: from azsmga002.ch.intel.com ([10.2.17.35]) by azsmga102.ch.intel.com with ESMTP; 15 Feb 2012 14:18:25 -0800 X-ExtLoop1: 1 Received: from azsmsx603.amr.corp.intel.com ([10.2.161.23]) by AZSMGA002.ch.intel.com with ESMTP; 15 Feb 2012 14:18:25 -0800 Received: from fmsmsx106.amr.corp.intel.com (10.19.9.37) by azsmsx603.amr.corp.intel.com (10.2.161.23) with Microsoft SMTP Server (TLS) id 8.2.255.0; Wed, 15 Feb 2012 15:18:51 -0700 Received: from fmsmsx102.amr.corp.intel.com ([169.254.2.70]) by FMSMSX106.amr.corp.intel.com ([169.254.6.189]) with mapi id 14.01.0355.002; Wed, 15 Feb 2012 14:18:51 -0800 From: "Iyer, Balaji V" To: "gcc-patches@gcc.gnu.org" Subject: [PATCH][Cilkplus] Patch to fix a bug in 32 bit Metadata Date: Wed, 15 Feb 2012 22:18:23 +0000 Message-ID: MIME-Version: 1.0 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 Hello Everyone, This patch is for the Cilkplus branch affecting the C and C++ compilers. This patch will fix a problem in metadata dwarf code generation part when we are trying to catch the register number when a spill occurs. Thanks, Balaji V. Iyer. diff --git a/gcc/cp/cp-array-notation.c b/gcc/cp/cp-array-notation.c old mode 100644 new mode 100755 diff --git a/gcc/ChangeLog.cilk b/gcc/ChangeLog.cilk index d50f02c..ebabff6 100644 --- a/gcc/ChangeLog.cilk +++ b/gcc/ChangeLog.cilk @@ -1,3 +1,9 @@ +2012-02-15 Balaji V. Iyer + + * cilk.c (cilk_fix_stack_reg): New function. + (expand_buitin_cilk_metadata): Added a check for memory type rtx and do + a call to the cilk_fix_reg_stack function. + 2012-02-14 Balaji V. Iyer * c-array-notation.c (contains_array_notation_exprs): Added a check diff --git a/gcc/cilk.c b/gcc/cilk.c index cc4ddcd..cd06f22 100644 --- a/gcc/cilk.c +++ b/gcc/cilk.c @@ -1032,6 +1032,32 @@ cilk_output_metadata (void) return; } +/* This function will go through an RTL of type MEM and then check to see if + * the register is PSEUDO, if so then we replace it with stack_pointer_rtx. + * This is mainly used to find the DWARF codes for parameters that are pushed + * in the stack. + */ +static rtx +cilk_fix_stack_reg (rtx mem_rtx) +{ + if (!mem_rtx || !MEM_P (mem_rtx)) + return mem_rtx; + + if (REG_P (XEXP (mem_rtx, 0))) + { + if (REGNO (XEXP (mem_rtx, 0)) >= FIRST_PSEUDO_REGISTER) + XEXP (mem_rtx, 0) = stack_pointer_rtx; + } + else if (GET_CODE (XEXP (mem_rtx, 0)) == PLUS) + { + rtx tmp_rtx = XEXP (mem_rtx, 0); + if (REG_P (XEXP (tmp_rtx, 0))) + if (REGNO (XEXP (tmp_rtx, 0)) >= FIRST_PSEUDO_REGISTER) + XEXP (XEXP (mem_rtx, 0), 0) = stack_pointer_rtx; + } + return mem_rtx; +} + rtx expand_builtin_cilk_metadata (const char *annotation ATTRIBUTE_UNUSED, tree exp ATTRIBUTE_UNUSED) @@ -1062,7 +1088,14 @@ expand_builtin_cilk_metadata (const char *annotation ATTRIBUTE_UNUSED, reg_rtx = XEXP (ii_rtx, 0); if (reg_rtx) if (GET_CODE (reg_rtx) == USE) - metadata_info.reg_rtx = XEXP (reg_rtx, 0); + { + reg_rtx = XEXP (reg_rtx, 0); + if (REG_P (reg_rtx)) + metadata_info.reg_rtx = reg_rtx; + else if (MEM_P (reg_rtx)) /* this means we are using stack */ + metadata_info.reg_rtx = cilk_fix_stack_reg (reg_rtx); + } + } loc_ref = loc_descriptor (metadata_info.reg_rtx, VOIDmode,