Hi,
On Tue, 3 Nov 2009, Uros Bizjak wrote:
introduce a new flag for just the last transformation. What do people
think?
There were some problems with the patch that enabled rsqrt
transformation in -ffast-math, see PR34709 [1]. The root cause was
analysed and the fix was proposed [2], but unfortunately, the fix was
never applied.
That testcase explicitely checks for outputs being +-Inf and gives Inf as
input in one case. As you noted in your followup there [1], this is
outside the scope of -ffinite-math. Hence that after the change NaN is
given is completely okay. The testcase wasn't the root cause for 481.wrf
breaking. The root cause was to transform sqrt(a/b) into 1/sqrt(b/a) at
all, which I indeed fixed (and added a testcase for already). That
transformation lead to the followup problem that suddenly behaviour at Inf
mattered, when it really shouldn't.
So, I don't think we are obliged to make this testcase work as the author
expected (it will change behaviour with my proposed patch). It would
unnecessarily slow down the rsqrt+NR expansion.
The patch itself is OK with the testcase from [2], but please be
prepared for eventual surprises ...
So, given the above, still OK, even without that testcase? I of course
checked that 481.wrf doesn't break (neither the other cpu2006 or
polyhedron benchmarks). And regstrapped on x86_64-linux, with all
languages+Ada.
[1] http://gcc.gnu.org/ml/gcc-patches/2008-01/msg00750.html