Nick Clifton <nickc@redhat.com> wrote:
Attached is a revised patch which correctly handles big-endian vs
little-endian. Tested with the following multilibs and no regressions:
[default]
-ml
-m2a
-m4a
-m4a -ml
OK to apply the patch this time ?
Thanks for doing this! I've confirmed that there are no
regressions on cross sh4-unknown-linux-gnu with the revised
patch. Unfortunately native bootstrap on that target fails
with the c++-compat warnings during compiling insn-emit.c:
cc1: warnings being treated as errors
../../LOCAL/trunk/gcc/config/sh/sh.md: In function 'gen_split_632':
../../LOCAL/trunk/gcc/config/sh/sh.md:6061:11: error: enum conversion when passing argument 2 of 'gen_rtx_fmt_ee_stat' is invalid in C++
./genrtl.h:8:12: note: expected 'enum machine_mode' but argument is of type 'int'
../../LOCAL/trunk/gcc/config/sh/sh.md:6085:7: error: enum conversion when passing argument 2 of 'gen_rtx_fmt_ee_stat' is invalid in C++
./genrtl.h:8:12: note: expected 'enum machine_mode' but argument is of type 'int'
../../LOCAL/trunk/gcc/config/sh/sh.md:6088:7: error: enum conversion when passing argument 2 of 'gen_rtx_fmt_ee_stat' is invalid in C++
./genrtl.h:8:12: note: expected 'enum machine_mode' but argument is of type 'int'
../../LOCAL/trunk/gcc/config/sh/sh.md: In function 'gen_split_633':
../../LOCAL/trunk/gcc/config/sh/sh.md:6132:11: error: enum conversion when passing argument 2 of 'gen_rtx_fmt_ee_stat' is invalid in C++
./genrtl.h:8:12: note: expected 'enum machine_mode' but argument is of type 'int'
../../LOCAL/trunk/gcc/config/sh/sh.md:6157:7: error: enum conversion when passing argument 2 of 'gen_rtx_fmt_ee_stat' is invalid in C++
./genrtl.h:8:12: note: expected 'enum machine_mode' but argument is of type 'int'
../../LOCAL/trunk/gcc/config/sh/sh.md:6160:7: error: enum conversion when passing argument 2 of 'gen_rtx_fmt_ee_stat' is invalid in C++
./genrtl.h:8:12: note: expected 'enum machine_mode' but argument is of type 'int'
The mechanical patch below is to silence these warnings.
Your patch is OK with that change.
Regards,
kaz
--
--- gcc/config/sh/sh.md.orig 2009-07-03 07:40:53.000000000 +0900
+++ gcc/config/sh/sh.md 2009-07-03 07:45:31.000000000 +0900
@@ -6058,7 +6058,7 @@ label:
{
XEXP (mem2, 0) = addr = gen_rtx_POST_INC (SImode, addr);
insn = emit_insn (gen_movsf_ie (reg0, mem2, operands[2]));
- REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, XEXP (addr, 0), NULL_RTX);
+ add_reg_note (insn, REG_INC, XEXP (addr, 0));
emit_insn (gen_movsf_ie (reg1, operands[1], operands[2]));
@@ -6082,10 +6082,10 @@ label:
case POST_INC:
insn = emit_insn (gen_movsf_ie (reg0, operands[1], operands[2]));
- REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, XEXP (addr, 0), NULL_RTX);
+ add_reg_note (insn, REG_INC, XEXP (addr, 0));
insn = emit_insn (gen_movsf_ie (reg1, operands[1], operands[2]));
- REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, XEXP (addr, 0), NULL_RTX);
+ add_reg_note (insn, REG_INC, XEXP (addr, 0));
break;
default:
@@ -6129,7 +6129,7 @@ label:
XEXP (operands[0], 0) = addr = gen_rtx_PRE_DEC (SImode, addr);
insn = emit_insn (gen_movsf_ie (operands[0], reg0, operands[2]));
- REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, XEXP (addr, 0), NULL_RTX);
+ add_reg_note (insn, REG_INC, XEXP (addr, 0));
break;
}
/* Fall through. */
@@ -6154,10 +6154,10 @@ label:
word to go to the lower address. */
insn = emit_insn (gen_movsf_ie (operands[0], reg1, operands[2]));
- REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, XEXP (addr, 0), NULL_RTX);
+ add_reg_note (insn, REG_INC, XEXP (addr, 0));
insn = emit_insn (gen_movsf_ie (operands[0], reg0, operands[2]));
- REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, XEXP (addr, 0), NULL_RTX);
+ add_reg_note (insn, REG_INC, XEXP (addr, 0));
break;
default: