https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65337

--- Comment #3 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
Indeed, the cd-dce is one the worst documented of the tradition SSA
optimizations. I commented on this to Jakum on IRC.  The mechanizm that should
prevent conditional from being removed is the control dependency. For every PHI
argument, the control dependent conditional is marked live.
So it is a question why the control dependent conditional is not live here -
one of problems I remember was that control dependency is defined for basic
blocks, while PHI handling needs it for edges.  This mostly does not matter
because critical edges are split, but with abnormal edges perhaps we manage to
get things wrong.

I am finishing paper today and fly to Vancouver at Tuesday, but will try to
look into this as time allows.

Reply via email to