This patch fixes an issue in jump threading where we'd sometimes use circular logic to fold the condition assumed or guarded to true. The code had an implicit assumption that a fact true at the end of a block must be true for all uses within the block. This is blatantly false. The net effect for guards was that we could remove a guard on a condition which wasn't actual true at runtime and miscompile.
I noticed this while working on another optimization patch. I'm a little terrified that we never noticed this previously.
Is this clang-formatted?