Path: utzoo!telly!ddsw1!mcdchg!rutgers!tut.cis.ohio-state.edu!LANL.GOV!dwf%hope From: dwf%hope@LANL.GOV (David W. Forslund) Newsgroups: gnu.gcc.bug Subject: (none) Message-ID: <8810121553.AA01965@hope.lanl.gov> Date: 12 Oct 88 15:53:01 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 83 After adding the patch for push_reload from RMS, gcc-1.29 still will not compile on a Sun4 running SunOS4.0: It dies in stage1 trying to compile toplev.c. Here is the output of dbx: Script started on Wed Oct 12 09:45:45 1988 demos% make CC=stage1/gcc CFLAGS="-g -v -O -Bstage1/" stage1/gcc -g -v -O -Bstage1/ -sun4 -c toplev.c gcc version 1.29 stage1/cpp -v -undef -D__GNU__ -D__GNUC__ -Dsparc -Dsun -Dunix -D__OPTIMIZE__ toplev.c /tmp/cca08294.cpp GNU CPP version 1.29 stage1/cc1 /tmp/cca08294.cpp -quiet -dumpbase toplev.c -g -O -version -o /tmp/cca08294.s GNU C version 1.29 (sparc) compiled by CC. stage1/gcc: Program cc1 got fatal signal 6. *** Error code 1 make: Fatal error: Command failed for target `toplev.o' demos% dbx stage1/cc1 Reading symbolic information... Read 41397 symbols (dbx) where kill() at 0xf7728c38 push_reload(in = 0xcd028, out = (nil), inloc = 0xcd074, outloc = (nil), class = GENERAL_REGS, inmode = SImode, outmode = VOIDmode, strict_low = 0, optional = 0), line 235 in "reload.c" find_reloads_address(mode = SImode, memrefloc = 0xcd214, ad = 0xcd028, loc = 0xcd074), line 1970 in "reload.c" find_reloads(insn = 0xcd220, replace = 0, ind_ok = 0, live_known = 1, reload_reg_p = 0xc65d8), line 1021 in "reload.c" reload(first = 0xccac8, global = 1, dumpfile = (nil)), line 434 in "reload1.c" global_alloc(file = (nil)), line 303 in "global-alloc.c" rest_of_compilation(decl = 0x10cb50), line 1288 in "toplev.c" finish_function(), line 3291 in "c-decl.c" yyparse(), line 224 in "c-parse.y" compile_file(name = 0xf7fffc40 "/tmp/cca08294.cpp"), line 863 in "toplev.c" main(argc = 10, argv = 0xf7fffb94, envp = 0xf7fffbc0), line 1579 in "toplev.c" (dbx) quit demos% ^D script done on Wed Oct 12 09:46:59 1988 Here is the patch which was used on reload.c. Are there others? *** reload.c~ Thu Oct 6 20:36:43 1988 --- reload.c Tue Oct 11 15:05:22 1988 *************** *** 308,313 **** --- 308,338 ---- && (in == 0 || reload_in[i] == 0 || MATCHES (reload_in[i], in))))) break; + /* Reloading a plain reg for input can match a reload to postincrement + that reg, since the postincrement's value is the right value. + Likewise, it can match a preincrement reload, since we regard + the preincrementation as happening before any ref in this insn + to that register. */ + if (i == n_reloads) + for (i = 0; i < n_reloads; i++) + if (reload_reg_class[i] == class + && reload_strict_low[i] == strict_low + && out == 0 && reload_out[i] == 0 + && ((GET_CODE (in) == REG + && (GET_CODE (reload_in[i]) == POST_INC + || GET_CODE (reload_in[i]) == POST_DEC + || GET_CODE (reload_in[i]) == PRE_INC + || GET_CODE (reload_in[i]) == PRE_DEC) + && MATCHES (XEXP (reload_in[i], 0), in)) + || + (GET_CODE (reload_in[i]) == REG + && (GET_CODE (in) == POST_INC + || GET_CODE (in) == POST_DEC + || GET_CODE (in) == PRE_INC + || GET_CODE (in) == PRE_DEC) + && MATCHES (XEXP (in, 0), reload_in[i])))) + break; + if (i == n_reloads) { /* We found no existing reload suitable for re-use. David Forslund MS E531 Los Alamos National Laboratory Los Alamos, NM 87545 (505) 665-1907 (dwf@lanl.gov)