This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, i386]: Fix PR target/39228, 387 optimised __builtin_isinf() gives incorrect result


On Wed, Feb 18, 2009 at 2:25 PM, Uros Bizjak <ubizjak@gmail.com> wrote:

> Attached patch fixes PR target/39228 by forcing operands[1] through
> volatile memory. This will strip excess precision from input operand.
>
> Patch was bootstrapped on i686-pc-linux-gnu. Patch also includes
> generic testcase that will check for possible problems with isinf()
> functions.

This is what I have committed to mainline:

2009-02-19  Uros Bizjak  <ubizjak@gmail.com>

	PR target/39228
	* config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
	(UNSPEC_FXAM_MEM): New unspec.
	(fxam<mode>2_i387_with_temp): New insn and split pattern.
	(isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
	memory using fxam<mode>2_i387_with_temp to remove excess precision.

testsuite/ChangeLog:

2009-02-19  Uros Bizjak  <ubizjak@gmail.com>

	PR target/39228
	* gcc.c-torture/execute/pr39228.c: New test.

Patch is changed a bit to expose more combine opportunities for memory
input operand.

Tested on i686-pc-linux-gnu and applied to mainline.

Uros.

Attachment: p.diff.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]