Commit d0a5295a by Richard Henderson Committed by Richard Henderson

i386.c (ix86_expand_movstr): Fail if esi or edi appropriated as globals.

        * config/i386/i386.c (ix86_expand_movstr): Fail if esi or edi
        appropriated as globals.
        (ix86_expand_clrstr): Similarly.
        * config/i386/i386.md (cmpstrsi): Similarly.

From-SVN: r62710
parent 9672132f
2003-02-11 Richard Henderson <rth@redhat.com>
* config/i386/i386.c (ix86_expand_movstr): Fail if esi or edi
appropriated as globals.
(ix86_expand_clrstr): Similarly.
* config/i386/i386.md (cmpstrsi): Similarly.
2003-02-11 Kazu Hirata <kazu@cs.umass.edu> 2003-02-11 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300.md (a peephole2): Add a case of 255. * config/h8300/h8300.md (a peephole2): Add a case of 255.
......
...@@ -10767,10 +10767,13 @@ ix86_expand_movstr (dst, src, count_exp, align_exp) ...@@ -10767,10 +10767,13 @@ ix86_expand_movstr (dst, src, count_exp, align_exp)
unsigned HOST_WIDE_INT count = 0; unsigned HOST_WIDE_INT count = 0;
rtx insns; rtx insns;
if (GET_CODE (align_exp) == CONST_INT) if (GET_CODE (align_exp) == CONST_INT)
align = INTVAL (align_exp); align = INTVAL (align_exp);
/* Can't use any of this if the user has appropriated esi or edi. */
if (global_regs[4] || global_regs[5])
return 0;
/* This simple hack avoids all inlining code and simplifies code below. */ /* This simple hack avoids all inlining code and simplifies code below. */
if (!TARGET_ALIGN_STRINGOPS) if (!TARGET_ALIGN_STRINGOPS)
align = 64; align = 64;
...@@ -11005,6 +11008,10 @@ ix86_expand_clrstr (src, count_exp, align_exp) ...@@ -11005,6 +11008,10 @@ ix86_expand_clrstr (src, count_exp, align_exp)
if (GET_CODE (align_exp) == CONST_INT) if (GET_CODE (align_exp) == CONST_INT)
align = INTVAL (align_exp); align = INTVAL (align_exp);
/* Can't use any of this if the user has appropriated esi. */
if (global_regs[4])
return 0;
/* This simple hack avoids all inlining code and simplifies code below. */ /* This simple hack avoids all inlining code and simplifies code below. */
if (!TARGET_ALIGN_STRINGOPS) if (!TARGET_ALIGN_STRINGOPS)
align = 32; align = 32;
......
...@@ -16222,6 +16222,10 @@ ...@@ -16222,6 +16222,10 @@
{ {
rtx addr1, addr2, out, outlow, count, countreg, align; rtx addr1, addr2, out, outlow, count, countreg, align;
/* Can't use this if the user has appropriated esi or edi. */
if (global_regs[4] || global_regs[5])
FAIL;
out = operands[0]; out = operands[0];
if (GET_CODE (out) != REG) if (GET_CODE (out) != REG)
out = gen_reg_rtx (SImode); out = gen_reg_rtx (SImode);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment