From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1372 invoked by alias); 9 Sep 2009 22:33:06 -0000 Received: (qmail 1267 invoked by uid 22791); 9 Sep 2009 22:33:01 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-px0-f179.google.com (HELO mail-px0-f179.google.com) (209.85.216.179) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 09 Sep 2009 22:32:57 +0000 Received: by pxi9 with SMTP id 9so4586255pxi.14 for ; Wed, 09 Sep 2009 15:32:55 -0700 (PDT) Received: by 10.114.9.6 with SMTP id 6mr1310948wai.35.1252535575586; Wed, 09 Sep 2009 15:32:55 -0700 (PDT) Received: from Paullaptop (203-206-7-21.dyn.iinet.net.au [203.206.7.21]) by mx.google.com with ESMTPS id 20sm1386880pzk.13.2009.09.09.15.32.51 (version=SSLv3 cipher=RC4-MD5); Wed, 09 Sep 2009 15:32:53 -0700 (PDT) Message-ID: <65E668F7450F461E82E66A815F06EEDF@Paullaptop> From: "Paul Edwards" To: "Joseph S. Myers" , "Ulrich Weigand" Cc: Subject: Re: i370 port Date: Wed, 09 Sep 2009 22:33: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-09/txt/msg00185.txt.bz2 > 2. I am unable to do an optimized compile even as a cross-compile, > I get an internal error in this function: > > gcse.c: > > static void > compute_hash_table_work (struct hash_table *table) > { > ... > if (!current_bb) /* +++ why are we getting NULL here? */ It appears I have misdiagnosed this. The code will handle NULL already. Taking that out though, exposes this internal error: int i370_branch_dest (branch) rtx branch; { rtx dest = SET_SRC (PATTERN (branch)); int dest_uid; int dest_addr; /* first, compute the estimated address of the branch target */ if (GET_CODE (dest) == IF_THEN_ELSE) dest = XEXP (dest, 1); dest = XEXP (dest, 0); /* +++ why is this becoming NULL? */ if (!dest) { printf("internal error in branch dest\n"); exit (0); } which is obviously specific to the i370 port. This code works fine on 3.2.3 though, so any idea what 3.4.6 changed to stop this from working? Thanks. Paul. dest_uid = INSN_UID (dest); dest_addr = INSN_ADDRESSES (dest_uid); /* next, record the address of this insn as the true addr of first ref */ { label_node_t *lp; rtx label = JUMP_LABEL (branch); int labelno = CODE_LABEL_NUMBER (label); if (!label || CODE_LABEL != GET_CODE (label)) abort (); lp = mvs_get_label (labelno); if (-1 == lp -> first_ref_page) lp->first_ref_page = mvs_page_num; just_referenced_page = lp->label_page; } return dest_addr; }