https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104639
--- Comment #10 from Andrew Macleod <amacleod at redhat dot com> --- I was thinking less about phis and more that its a "return" instead of an "if" ending the block preventing the threader from doing anything. _3 = i_6 != 0; return _3; Ie, so if a return uses a condition, we could act like its a branch.. if that were viewed as if (_3) return 1 else return 0 the threader would do what we are looking for? I don't know if that would be easy or hard or even worthwhile, but I seem to vaguely recall another situation a few months ago that was similar... with a block that ended in a return not triggering threads thru a PHI in the block that could have been helpful.