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



Richard Biener <rguenth at gcc dot gnu.org> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

             Status|UNCONFIRMED                 |NEW

   Last reconfirmed|                            |2013-01-02

     Ever Confirmed|0                           |1



--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-02 
11:12:11 UTC ---

The ->block_info load is



 if (a)

   .... and load ->block_info



 if (b)

   .... and load ->block_info



->block_info isn't used outside of the conditional regions so this is

neither a hoisting nor a missed (partial) redundancy opportunity.

We might be able to speculate loading ->block_info, but speculating

indirect loads would only be possible if we know the load will never

trap (which in this case we might derive from the fact that we load

->block_info_size unconditionally).  phiopt does some load speculation

already - but for adjacent loads only, like



     if (...)

       x = y->left;

     else

       x = y->right;



which then enables conditional move generation.



But I guess the case from this bug would fit parts of the framework

that are already present in phiopt.  Eventually cselim could be

used to speculate the loads as well.



Note that SCCVN already value-numbers both loads the same (but for some

reason _not_ the dependent calculation ...).



This we track here.

Reply via email to