Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!ukc!strath-cs!jim From: jim@cs.strath.ac.uk (Jim Reid) Newsgroups: gnu.gcc.bug Subject: Re: GCC on Sequent Balance machines -- reload1.c out of tree space Message-ID: <1464@baird.cs.strath.ac.uk> Date: 10 Jan 90 16:59:04 GMT References: <8YKD^@rpi.edu> Sender: news@cs.strath.ac.uk Reply-To: jim@cs.strath.ac.uk Organization: Comp. Sci. Dept., Strathclyde Univ., Scotland. Lines: 64 In article <8YKD^@rpi.edu> tale@cs.rpi.edu (David C Lawrence) writes: >I am having a bit of a problem getting a working GCC 1.36 on our >Sequent Balance 8000 and 21000 machines. The following seems to be >the only thing (currently) standing in the way of getting it going: >$ make > cc -c -g -I. -I. -I./config reload1.c >"reload1.c", line 2249: compiler error: out of tree space; simplify expression >*** Error code 1 I fixed this some time ago and passed the patch to RMS for inclusion in a subsequent version of GCC. Here's the patch. Enjoy. Jim *** reload1.c Wed Nov 8 10:19:44 1989 --- reload1.c.seq Wed Nov 8 11:31:24 1989 *************** *** 1866,1871 **** --- 1866,1875 ---- /* Non-zero means we must reuse spill regs for multiple reloads in this insn or we will not have enough spill regs. */ int must_reuse = 0; + #if defined(sequent) && defined(ns32000) && !defined(__GNUC__) + /* kludge for DYNIX C compiler */ + int h1, h2, h3; + #endif bzero (reload_inherited, MAX_RELOADS); bzero (reload_override_in, MAX_RELOADS * sizeof (rtx)); *************** *** 2240,2245 **** --- 2244,2265 ---- reload_spill_index[r] = i; /* Detect when the reload reg can't hold the reload mode. */ + #if defined(sequent) && defined(ns32000) && !defined(__GNUC__) + /* + * The Sequent Balance C compiler cannot grok the + * original expression, so simplify it. + * JR 8/11/89 jim@cs.strath.ac.uk + */ + h1 = HARD_REGNO_MODE_OK (REGNO (reload_reg_rtx[r]), + reload_mode); + h2 = HARD_REGNO_MODE_OK (REGNO (reload_reg_rtx[r]), + GET_MODE (reload_in[r])); + h3 = HARD_REGNO_MODE_OK (REGNO (reload_reg_rtx[r]), + GET_MODE (reload_out[r])); + if (!h1 || (reload_in[r] != 0 && !h2) + || (reload_out[r] != 0 && !h3)) + + #else if (! HARD_REGNO_MODE_OK (REGNO (reload_reg_rtx[r]), reload_mode) || (reload_in[r] != 0 && ! HARD_REGNO_MODE_OK (REGNO (reload_reg_rtx[r]), *************** *** 2247,2252 **** --- 2267,2273 ---- || (reload_out[r] != 0 && ! HARD_REGNO_MODE_OK (REGNO (reload_reg_rtx[r]), GET_MODE (reload_out[r])))) + #endif { if (asm_noperands (PATTERN (insn)) < 0) /* It's the compiler's fault. */