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.