sanjoy added a comment.
IIUC this is also a correctness fix, right?
Since you could have had:
volatile boolean always_false = ...;
for (...)
if (always_false)
assume(false);
and hoisting out `assume(false)` to the loop preheader will make the loop appear dead.
http://reviews.llvm.org/D20653