This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA: Remove undocumented SH -mfmovd option


Hi All,

please don't remove this option, It is still in use in some of our ABIs, for sh-superh-elf embedded platforms. If we have maintenance problems I can volonteer to maintain it, but we still do actively use it (although never set by default),

If the problem is documentation, I have this patch to apply :

mfmovd
-Target RejectNegative Mask(FMOVD) Undocumented
+Target RejectNegative Mask(FMOVD)
+Enable the use of 64-bit floating point registers in fmov instructions
+

Best Regards

Christian

Kaz Kojima wrote:
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:




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]