From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27364 invoked by alias); 26 Aug 2004 00:03:38 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 27311 invoked by alias); 26 Aug 2004 00:03:37 -0000 Date: Thu, 26 Aug 2004 00:03:00 -0000 Message-ID: <20040826000337.27310.qmail@sourceware.org> From: "geoffk at geoffk dot org" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20040711213734.16480.kurt@symbolicsound.com> References: <20040711213734.16480.kurt@symbolicsound.com> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug target/16480] using -msdata causes internal compiler error X-Bugzilla-Reason: CC X-SW-Source: 2004-08/txt/msg02711.txt.bz2 List-Id: ------- Additional Comments From geoffk at geoffk dot org 2004-08-26 00:03 ------- Subject: Re: using -msdata causes internal compiler error "amodra at bigpond dot net dot au" writes: > ------- Additional Comments From amodra at bigpond dot net dot au 2004-08-25 11:21 ------- > Mainline fails similarly. The failure results from this splitter > > (define_split > [(set (match_operand:DI 0 "nonimmediate_operand" "") > (match_operand:DI 1 "input_operand" ""))] > "reload_completed && !TARGET_POWERPC64 > && gpr_or_gpr_p (operands[0], operands[1])" > [(pc)] > { rs6000_split_multireg_move (operands[0], operands[1]); DONE; }) > > The "input_operand" predicate accepts any memory operand as the second operand. > rs6000_split_multireg_move thus needs to accept anything that we accept in > rs6000_legitimate_address. For this particular failure, that's a > (mem (symbol_ref (...))), which happens to satisfy legitimate_small_data_p. It's probably the code under this comment: /* We have now address involving an base register only. If we use one of the registers to address memory, we have change that register last. */ I expect the right thing to do is simply do if (GET_CODE (breg) != SYMBOL_REF) { if (! REG_P (breg)) abort(); if (REGNO (breg) ...) j = ...; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16480