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
This commit is contained in:
parent
56e449d39a
commit
21da84bd5e
4 changed files with 47 additions and 8 deletions
|
@ -1,3 +1,10 @@
|
|||
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>
|
||||
Nigel Stephens <nigel@mips.com>
|
||||
|
||||
|
@ -1191,8 +1198,7 @@
|
|||
(lshr<mode>3): Ditto.
|
||||
(ashl<mode>3): Ditto.
|
||||
(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,
|
||||
IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
|
||||
|
||||
|
|
|
@ -16691,10 +16691,18 @@
|
|||
{
|
||||
rtx label = gen_label_rtx ();
|
||||
|
||||
emit_label (label);
|
||||
rtx op2;
|
||||
|
||||
emit_insn (gen_fpremxf4_i387 (operands[1], operands[2],
|
||||
operands[1], operands[2]));
|
||||
if (rtx_equal_p (operands[1], operands[2]))
|
||||
{
|
||||
op2 = gen_reg_rtx (XFmode);
|
||||
emit_move_insn (op2, operands[2]);
|
||||
}
|
||||
else
|
||||
op2 = operands[2];
|
||||
|
||||
emit_label (label);
|
||||
emit_insn (gen_fpremxf4_i387 (operands[1], op2, operands[1], op2));
|
||||
ix86_emit_fp_unordered_jump (label);
|
||||
LABEL_NUSES (label) = 1;
|
||||
|
||||
|
@ -16755,10 +16763,18 @@
|
|||
{
|
||||
rtx label = gen_label_rtx ();
|
||||
|
||||
emit_label (label);
|
||||
rtx op2;
|
||||
|
||||
emit_insn (gen_fprem1xf4_i387 (operands[1], operands[2],
|
||||
operands[1], operands[2]));
|
||||
if (rtx_equal_p (operands[1], operands[2]))
|
||||
{
|
||||
op2 = gen_reg_rtx (XFmode);
|
||||
emit_move_insn (op2, operands[2]);
|
||||
}
|
||||
else
|
||||
op2 = operands[2];
|
||||
|
||||
emit_label (label);
|
||||
emit_insn (gen_fprem1xf4_i387 (operands[1], op2, operands[1], op2));
|
||||
ix86_emit_fp_unordered_jump (label);
|
||||
LABEL_NUSES (label) = 1;
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
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>
|
||||
|
||||
* gfortran.dg/nint_2.f90: Revert previous commit.
|
||||
|
|
12
gcc/testsuite/gcc.target/i386/pr33483.c
Normal file
12
gcc/testsuite/gcc.target/i386/pr33483.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
/* { 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);
|
||||
}
|
Loading…
Add table
Reference in a new issue