Jump threading MIR opt unsoundly uses bitpattern equality for floats

I tried this code (sorry, I cannot reproduce it without inari ATM):

use inari::{Interval as I, const_interval};

fn f(u: I) -> f64 {
    let t = u.inf() == 0.;
    // let t = u.inf() == -0.;
    // println!("{}", t);
    if t { 1. }
    else { println!("{} {}", u.inf(), u.inf() == 0.);
        u.inf() }
}

fn main() {
    println!("{}", f(const_interval!(0., 0.)));
}

I expected to see this happen: 1

Instead, in --release mode, I got:

If I uncomment one of the above commented lines, the code executes correctly.

Meta

This happens with both

rustc --version --verbose:

rustc 1.82.0-nightly (7120fdac7 2024-07-25)
binary: rustc
commit-hash: 7120fdac7a6e55a5e4b606256042890b36067052
commit-date: 2024-07-25
host: x86_64-unknown-linux-gnu
release: 1.82.0-nightly
LLVM version: 18.1.7

and

rustc 1.80.0 (051478957 2024-07-21)
binary: rustc
commit-hash: 051478957371ee0084a7c0913941d2a8c4757bb9
commit-date: 2024-07-21
host: x86_64-unknown-linux-gnu
release: 1.80.0
LLVM version: 18.1.7