------- Comment #20 from law at redhat dot com  2008-10-15 17:36 -------
Subject: Re:  [4.4 Regression] calculix gets
 wrong answer for -O1 -ffast-math

jakub at gcc dot gnu dot org wrote:
> ------- Comment #14 from jakub at gcc dot gnu dot org  2008-10-15 09:08 
> -------
> The problem is that thread_across_edge figures out that the fabs (al[0] -
> al[1])
> < 1.e-5 test is unnecessary, always yields false for +-1.0, by substituting 
> the
> values in record_temporary_equivalences_from_stmts_at_dest, but doesn't
> actually optimize all the computations to constants. 
It's not safe to actually optimize the computations because the 
equivalences we use may be specific to a path through the CFG.

One could easily argue that when these situations arise we've actually 
identified a missed optimization in PRE.

Or one could argue that the block in question ought to be a candidate 
for duplication and tacking onto the end of its predecessor blocks 
(super-block formation) which would expose the partial redundancy at the 
cost of duplicating statements.  I've generally not been a fan of 
super-block formation as, IMHO, PRE catches the vast majority of things 
super-block formation would and PRE doesn't have the code expansion 
problems that the super-block approach does.
[ ... ]

> is quite clear and this testcase definitely relies on +0 vs. -0 difference
> heavily.
>
> So I'd say this should be closed as INVALID.
>
>   
Or kept open as an enhancement request for PRE.

jeff


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37449

Reply via email to