i386.c (ix86_expand_int_movcc): If overlap between out and comparison sequence has been detected...
* config/i386/i386.c (ix86_expand_int_movcc): If overlap between out and comparison sequence has been detected, put result into proper temporary pseudo. * gcc.c-torture/execute/20010422-1.c: New test. From-SVN: r41536
This commit is contained in:
parent
6bda7a5e41
commit
e99af66bba
4 changed files with 30 additions and 5 deletions
|
@ -1,3 +1,9 @@
|
|||
2001-04-25 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* config/i386/i386.c (ix86_expand_int_movcc): If overlap between
|
||||
out and comparison sequence has been detected, put result into
|
||||
proper temporary pseudo.
|
||||
|
||||
2001-04-24 Zack Weinberg <zackw@stanford.edu>
|
||||
|
||||
* Makefile.in (LIB2FUNCS): Remove _varargs and __dummy.
|
||||
|
|
|
@ -6279,7 +6279,7 @@ ix86_expand_int_movcc (operands)
|
|||
* Size 5 - 8.
|
||||
*/
|
||||
if (ct)
|
||||
emit_insn (gen_addsi3 (out, out, GEN_INT (ct)));
|
||||
emit_insn (gen_addsi3 (tmp, tmp, GEN_INT (ct)));
|
||||
}
|
||||
else if (cf == -1)
|
||||
{
|
||||
|
@ -6290,7 +6290,7 @@ ix86_expand_int_movcc (operands)
|
|||
*
|
||||
* Size 8.
|
||||
*/
|
||||
emit_insn (gen_iorsi3 (out, out, GEN_INT (ct)));
|
||||
emit_insn (gen_iorsi3 (tmp, tmp, GEN_INT (ct)));
|
||||
}
|
||||
else if (diff == -1 && ct)
|
||||
{
|
||||
|
@ -6304,7 +6304,7 @@ ix86_expand_int_movcc (operands)
|
|||
*/
|
||||
emit_insn (gen_one_cmplsi2 (tmp, tmp));
|
||||
if (cf)
|
||||
emit_insn (gen_addsi3 (out, out, GEN_INT (cf)));
|
||||
emit_insn (gen_addsi3 (tmp, tmp, GEN_INT (cf)));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -6316,10 +6316,10 @@ ix86_expand_int_movcc (operands)
|
|||
*
|
||||
* Size 8 - 11.
|
||||
*/
|
||||
emit_insn (gen_andsi3 (out, out, GEN_INT (trunc_int_for_mode
|
||||
emit_insn (gen_andsi3 (tmp, tmp, GEN_INT (trunc_int_for_mode
|
||||
(cf - ct, SImode))));
|
||||
if (ct)
|
||||
emit_insn (gen_addsi3 (out, out, GEN_INT (ct)));
|
||||
emit_insn (gen_addsi3 (tmp, tmp, GEN_INT (ct)));
|
||||
}
|
||||
|
||||
if (tmp != out)
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2001-04-25 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gcc.c-torture/execute/20010422-1.c: New test.
|
||||
|
||||
2001-04-25 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* g++.old-deja/g++.ns/type2.C: New test.
|
||||
|
|
15
gcc/testsuite/gcc.c-torture/execute/20010422-1.c
Normal file
15
gcc/testsuite/gcc.c-torture/execute/20010422-1.c
Normal file
|
@ -0,0 +1,15 @@
|
|||
unsigned int foo(unsigned int x)
|
||||
{
|
||||
if (x < 5)
|
||||
x = 4;
|
||||
else
|
||||
x = 8;
|
||||
return x;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
if (foo (8) != 8)
|
||||
abort ();
|
||||
exit (0);
|
||||
}
|
Loading…
Add table
Reference in a new issue