Commit message:
gopls/internal/analysis/yield: handle booleans better
This change improves the analysis of control flow conditions,
especially in the presence of conditions materialized
as booleans.
Previously, we would peephole-optimize conditions
of the form phi(false, ..., yield), but not cases such as
phi(false, phi(false, ..., yield), yield). Now we apply
the optimization to all leaves of the phi graph.
Happily, the only test failure encountered while making
this change was the one that intentionally recorded the
limitation of the old algorithm. Sadly, it took me a while
to notice that this failure was a good thing and stop
futzing with my logic!
+ tests
Fixes golang/go#74136
Fixes golang/go#75924