mirror of git://gcc.gnu.org/git/gcc.git
re PR target/31641 (ICE in s390_expand_setmem, at config/s390/s390.c:3618)
2007-04-24 Andreas Krebbel <krebbel1@de.ibm.com> PR target/31641 * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length argument of 0 for memset. (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use unsigned shift instead of the signed variant. 2007-04-24 Andreas Krebbel <krebbel1@de.ibm.com> PR target/31641 * gcc.c-torture/compile/pr31641.c: New testcase. From-SVN: r124099
This commit is contained in:
parent
c0e7e2bf13
commit
c9f599914f
|
|
@ -1,3 +1,11 @@
|
|||
2007-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
|
||||
|
||||
PR target/31641
|
||||
* config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
|
||||
argument of 0 for memset.
|
||||
(s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
|
||||
unsigned shift instead of the signed variant.
|
||||
|
||||
2007-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
|
||||
|
||||
* config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
|
||||
|
|
|
|||
|
|
@ -3570,7 +3570,7 @@ s390_expand_movmem (rtx dst, rtx src, rtx len)
|
|||
if (temp != count)
|
||||
emit_move_insn (count, temp);
|
||||
|
||||
temp = expand_binop (mode, ashr_optab, count, GEN_INT (8), blocks, 1, 0);
|
||||
temp = expand_binop (mode, lshr_optab, count, GEN_INT (8), blocks, 1, 0);
|
||||
if (temp != blocks)
|
||||
emit_move_insn (blocks, temp);
|
||||
|
||||
|
|
@ -3607,10 +3607,12 @@ s390_expand_movmem (rtx dst, rtx src, rtx len)
|
|||
void
|
||||
s390_expand_setmem (rtx dst, rtx len, rtx val)
|
||||
{
|
||||
gcc_assert (GET_CODE (len) != CONST_INT || INTVAL (len) > 0);
|
||||
if (GET_CODE (len) == CONST_INT && INTVAL (len) == 0)
|
||||
return;
|
||||
|
||||
gcc_assert (GET_CODE (val) == CONST_INT || GET_MODE (val) == QImode);
|
||||
|
||||
if (GET_CODE (len) == CONST_INT && INTVAL (len) <= 257)
|
||||
if (GET_CODE (len) == CONST_INT && INTVAL (len) > 0 && INTVAL (len) <= 257)
|
||||
{
|
||||
if (val == const0_rtx && INTVAL (len) <= 256)
|
||||
emit_insn (gen_clrmem_short (dst, GEN_INT (INTVAL (len) - 1)));
|
||||
|
|
@ -3684,7 +3686,7 @@ s390_expand_setmem (rtx dst, rtx len, rtx val)
|
|||
if (temp != count)
|
||||
emit_move_insn (count, temp);
|
||||
|
||||
temp = expand_binop (mode, ashr_optab, count, GEN_INT (8), blocks, 1, 0);
|
||||
temp = expand_binop (mode, lshr_optab, count, GEN_INT (8), blocks, 1, 0);
|
||||
if (temp != blocks)
|
||||
emit_move_insn (blocks, temp);
|
||||
|
||||
|
|
@ -3776,7 +3778,7 @@ s390_expand_cmpmem (rtx target, rtx op0, rtx op1, rtx len)
|
|||
if (temp != count)
|
||||
emit_move_insn (count, temp);
|
||||
|
||||
temp = expand_binop (mode, ashr_optab, count, GEN_INT (8), blocks, 1, 0);
|
||||
temp = expand_binop (mode, lshr_optab, count, GEN_INT (8), blocks, 1, 0);
|
||||
if (temp != blocks)
|
||||
emit_move_insn (blocks, temp);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
2007-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
|
||||
|
||||
PR target/31641
|
||||
* gcc.c-torture/compile/pr31641.c: New testcase.
|
||||
|
||||
2007-04-24 Richard Sandiford <richard@nildram.co.uk>
|
||||
|
||||
* gcc.target/mips/madd-1.c, gcc.target/mips/madd-2.c,
|
||||
|
|
|
|||
Loading…
Reference in New Issue