jayfoad wrote: Is this going to match `X == +0.0 ? X : Y` --> `X == +0.0 ? +0.0 : Y`? That would be wrong, because if X is -0.0 then the first one evaluates to -0.0 and the second one evaluates to +0.0. https://github.com/llvm/llvm-project/pull/131146