https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68097
--- Comment #8 from Aldy Hernandez <aldyh at gcc dot gnu.org> --- (In reply to Richard Biener from comment #7) > Yes, I think fixed in that we can now record info on FP SSA names. There > are other bugs for specific things. > > What's not fixed is that we still recurse to SSA defs in > gimple_assign_nonnegative_warnv_p and friends. We might think to fix that > now, I see. If I understand things correctly, you may want to do something like: if (frange::supports_p (TREE_TYPE (name))) { frange r; bool sign; if (get_global_range_query ()->range_of_expr (r, name) && r.signbit_p (sign)) return sign == false; } That is, get the global range of the SSA name, and if it has a known signbit, you should be able to determine if it's nonnegative. The above works correctly for signed zeros now too.