From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21300 invoked by alias); 29 Nov 2009 14:18:40 -0000 Received: (qmail 21287 invoked by uid 22791); 29 Nov 2009 14:18:38 -0000 X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 tests=AWL,BAYES_00,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-yw0-f180.google.com (HELO mail-yw0-f180.google.com) (209.85.211.180) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 29 Nov 2009 14:18:32 +0000 Received: by ywh10 with SMTP id 10so7618774ywh.8 for ; Sun, 29 Nov 2009 06:18:30 -0800 (PST) Received: by 10.150.127.10 with SMTP id z10mr5215049ybc.276.1259504310665; Sun, 29 Nov 2009 06:18:30 -0800 (PST) Received: from Paullaptop (203-158-49-56.dyn.iinet.net.au [203.158.49.56]) by mx.google.com with ESMTPS id 13sm1139407gxk.13.2009.11.29.06.18.27 (version=SSLv3 cipher=RC4-MD5); Sun, 29 Nov 2009 06:18:28 -0800 (PST) Message-ID: <21C621DE1F0D4A7193A78C4FBEC7BD59@Paullaptop> From: "Paul Edwards" To: "Richard Guenther" Cc: Subject: Re: i370 port - music/sp - possible generic gcc problem Date: Sun, 29 Nov 2009 14:31:00 -0000 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="Windows-1252"; reply-type=response Content-Transfer-Encoding: 7bit Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org X-SW-Source: 2009-11/txt/msg00810.txt.bz2 Latest information - > Ok, based on this, I traced it back further: > > rtx > gen_rtx_fmt_e0 (code, mode, arg0) > RTX_CODE code; > enum machine_mode mode; > rtx arg0; > { > rtx rt; > rt = ggc_alloc_rtx (2); > memset (rt, 0, sizeof (struct rtx_def) - sizeof (rtunion)); The request for 2 (I guess, rtx's) results in a malloc for 65536 bytes, so presumably each rtx is 32k. It appears that only the single byte at offset 47072 needs to be initialized to some appropriate value (I found that x'08' and x'81' also work, and I am still experimenting on that) in order to circumvent the problem of garbage code generation. > rtx > gen_rtx_MEM (mode, addr) > enum machine_mode mode; > rtx addr; > { > rtx rt = gen_rtx_raw_MEM (mode, addr); > > /* This field is not cleared by the mere allocation of the rtx, so > we clear it here. */ > MEM_ATTRS (rt) = 0; > > return rt; > } I wonder if another field like the above also needs to be initialized? Or maybe the same field, but it needs to be for the second rtx? I will try to see if I can map that offset onto a meaningful variable. BFN. Paul.