From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29491 invoked by alias); 29 Jul 2002 17:42:18 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 29484 invoked from network); 29 Jul 2002 17:42:17 -0000 Received: from unknown (HELO www.eyesopen.com) (12.96.199.11) by sources.redhat.com with SMTP; 29 Jul 2002 17:42:17 -0000 Received: from localhost (roger@localhost) by www.eyesopen.com (8.9.3/8.9.3) with ESMTP id LAA23872; Mon, 29 Jul 2002 11:28:43 -0600 Date: Tue, 30 Jul 2002 03:23:00 -0000 From: Roger Sayle To: Andreas Jaeger cc: Subject: Re: gcc bootstrap broken on i686-linux-gnu In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-SW-Source: 2002-07/txt/msg01391.txt.bz2 On Mon, 29 Jul 2002, Andreas Jaeger wrote: > Roger Sayle writes: > >> /cvs/gcc/libjava/interpret.cc:3170: internal compiler error: RTL check: > >> expected code `reg', have `subreg' in split_2, at insn-recog.c:61241 > >> Please submit a full bug report, > >> with preprocessed source if appropriate. > >> See for instructions. > >> > >> I nailed it down to this patch. Bootstrapping with that patch > >> applied causes the ICE, without it everything seems to be fine. > >> > >> Roger, can you investigate, please? > > > > Certainly. Sorry for any inconvenience. The two possible > > changes in behaviour are that -1.0*x is now tranformed into > > -x by default (this previously only happened with -ffast-math), > > and that "==" and "!=" no longer trap with default options. > > One or both of these may be interacting badly with another > > part of the compiler. > > > > I'll keep you informed as I progress. I should have a fix > > or a work-around by the end of the day. > > That's fast - it gives you 6 more hours for my end of the day ;-) > (take your time to fix it properly, I can wait another day) > > If you cannot reproduce it, ask me and I can try to send more details. Hi Andreas, By a strange coincidence, I've been trying to track down an ICE building the powerpc tool chain on i686-pc-linux-gnu, so I last night I tried my first ever "--enable-checking" bootstrap. This morning I arrived at the office to find it had stopped in libjava on exactly the problem you mentioned. It looks like it is the -1.0*x to -x optimization that's triggering the problem, the failure is in the split_all_insns pass that's trying to split the following instruction: (insn:HI 4951 4950 4957 212 0x4057a8c0 (parallel [ (set (subreg:DF (reg/v:DI 1199) 0) (neg:DF (reg/v:DF 1193))) (clobber (reg:CC 17 flags)) ]) 372 {*negdf2_if} (insn_list 4941 (nil)) (expr_list:REG_DEAD (reg/v:DF 1193) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil)))) I'm currently trying to work out whether (1) its the code that generated the (subreg:DF (reg:DI x) 0) that's at fault, (2) whether there's an incorrect constraint in the i386.md patterns, or (3) its an issue with genrecog generating an incorrect split_insns implementation. Anyone? anyone? Roger --