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.

Reply via email to