> I'm trying the attached patch over sh-softfp-20100718-2131 patch. > All regressions go away with it on cross sh4-unknown-linux-gnu, > though the native bootstrap will take a few days more.
There are a few warnings in bootstrap: ../trunk/gcc/config/sh/sh.c: In function 'sh_soft_fp_cmp': ../trunk/gcc/config/sh/sh.c:2193:8: error: enum conversion in initialization is invalid in C++ [-Werror=c++-compat] ../trunk/gcc/config/sh/sh.c:2248:3: error: enum conversion when passing argument 1 of 'gen_rtx_fmt_ee_stat' is invalid in C++ [-Werror=c++-compat] ./genrtl.h:24:1: note: expected 'enum rtx_code' but argument is of type 'int' ../trunk/gcc/config/sh/sh.c: In function 'expand_sfunc_op': ../trunk/gcc/config/sh/sh.c:8744:19: error: variable 'insn' set but not used [-Werror=unused-but-set-variable] cc1: all warnings being treated as errors The attached is a fixup for them. Unfortunately, the bootstrap has failed with stage2/stage3 comparison failure, though it might be irrelevant with softfp patches. I'll try again with some older revision. Regards, kaz -- --- ORIG/trunk/gcc/config/sh/sh.c 2010-07-19 10:58:36.000000000 +0900 +++ trunk/gcc/config/sh/sh.c 2010-07-21 06:45:18.000000000 +0900 @@ -2185,12 +2185,13 @@ sh_emit_cheap_store_flag (enum machine_m } static rtx -sh_soft_fp_cmp (int code, enum machine_mode op_mode, rtx op0, rtx op1) +sh_soft_fp_cmp (enum rtx_code code, enum machine_mode op_mode, rtx op0, + rtx op1) { const char *name = NULL; rtx (*fun) (rtx, rtx), addr, tmp, last, equiv; int df = op_mode == DFmode; - enum machine_mode mode = CODE_FOR_nothing; /* shut up warning. */ + enum machine_mode mode = MAX_MACHINE_MODE; /* shut up warning. */ switch (code) { @@ -8741,13 +8742,13 @@ expand_sfunc_op (int nargs, enum machine const char *name, rtx equiv, rtx *operands) { int next_reg = FIRST_PARM_REG, i; - rtx addr, last, insn; + rtx addr, last; addr = gen_reg_rtx (Pmode); function_symbol (addr, name, SFUNC_FREQUENT); for ( i = 1; i <= nargs; i++) { - insn = emit_move_insn (gen_rtx_REG (mode, next_reg), operands[i]); + emit_move_insn (gen_rtx_REG (mode, next_reg), operands[i]); next_reg += GET_MODE_SIZE (mode) / UNITS_PER_WORD; } last = emit_insn ((*fun) (operands[0], addr));