Correctly handle range metadata when hoisting instructions into if blocks

This is pending review at http://reviews.llvm.org/D4595 but seems simple enough that I'd imagine it'll be accepted.

This will fix https://github.com/rust-lang/rust/issues/15793 in rust-lang.