Commit 21da84bd by Uros Bizjak Committed by Uros Bizjak

re PR target/33438 (ICE in cselib_record_set, at cselib.c:1515 on x86)

        PR target/33438
        * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary register
        when operands[2] equals operands[1].
        (remainderxf3): Ditto.

testsuite/ChangeLog:

        PR target/33438
        * gcc.target/i386/pr33438.c: New test.

From-SVN: r128502
parent 56e449d3
2007-09-14 Uros Bizjak <ubizjak@gmail.com>
PR target/33438
* config/i386/i386.md (fmodxf3): Copy operands[2] to temporary register
when operands[2] equals operands[1].
(remainderxf3): Ditto.
2007-09-14 Sandra Loosemore <sandra@codesourcery.com> 2007-09-14 Sandra Loosemore <sandra@codesourcery.com>
Nigel Stephens <nigel@mips.com> Nigel Stephens <nigel@mips.com>
...@@ -1191,8 +1198,7 @@ ...@@ -1191,8 +1198,7 @@
(lshr<mode>3): Ditto. (lshr<mode>3): Ditto.
(ashl<mode>3): Ditto. (ashl<mode>3): Ditto.
(vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2. (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
(vec_shr_<mode>): Use const_0_to_255_mul_8_operand predicate for op2. (vec_shr_<mode>): Ditto.
* gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128, * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode. IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
...@@ -16691,10 +16691,18 @@ ...@@ -16691,10 +16691,18 @@
{ {
rtx label = gen_label_rtx (); rtx label = gen_label_rtx ();
emit_label (label); rtx op2;
if (rtx_equal_p (operands[1], operands[2]))
{
op2 = gen_reg_rtx (XFmode);
emit_move_insn (op2, operands[2]);
}
else
op2 = operands[2];
emit_insn (gen_fpremxf4_i387 (operands[1], operands[2], emit_label (label);
operands[1], operands[2])); emit_insn (gen_fpremxf4_i387 (operands[1], op2, operands[1], op2));
ix86_emit_fp_unordered_jump (label); ix86_emit_fp_unordered_jump (label);
LABEL_NUSES (label) = 1; LABEL_NUSES (label) = 1;
...@@ -16755,10 +16763,18 @@ ...@@ -16755,10 +16763,18 @@
{ {
rtx label = gen_label_rtx (); rtx label = gen_label_rtx ();
emit_label (label); rtx op2;
if (rtx_equal_p (operands[1], operands[2]))
{
op2 = gen_reg_rtx (XFmode);
emit_move_insn (op2, operands[2]);
}
else
op2 = operands[2];
emit_insn (gen_fprem1xf4_i387 (operands[1], operands[2], emit_label (label);
operands[1], operands[2])); emit_insn (gen_fprem1xf4_i387 (operands[1], op2, operands[1], op2));
ix86_emit_fp_unordered_jump (label); ix86_emit_fp_unordered_jump (label);
LABEL_NUSES (label) = 1; LABEL_NUSES (label) = 1;
......
2007-09-14 Uros Bizjak <ubizjak@gmail.com>
PR target/33438
* gcc.target/i386/pr33438.c: New test.
2007-09-14 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> 2007-09-14 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
* gfortran.dg/nint_2.f90: Revert previous commit. * gfortran.dg/nint_2.f90: Revert previous commit.
/* { dg-do compile } */
/* { dg-options "-O2" } */
long double f1 (long double x)
{
return __builtin_fmodl (x, x);
}
long double f2 (long double x)
{
return __builtin_remainderl (x, x);
}
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