ipa-* still works on legacy value_range's which only support
integrals.  This patch limits the query to integrals, as to not get a
floating point range that can't exist in an irange.
Will commit pending a final round of tests.

gcc/ChangeLog:

        * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Limit ranger
        query to integrals.
---
 gcc/ipa-prop.cc | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/gcc/ipa-prop.cc b/gcc/ipa-prop.cc
index fb8f97397dc..ca5b9f31570 100644
--- a/gcc/ipa-prop.cc
+++ b/gcc/ipa-prop.cc
@@ -2303,6 +2303,10 @@ ipa_compute_jump_functions_for_edge (struct 
ipa_func_body_info *fbi,
        {
          if (TREE_CODE (arg) == SSA_NAME
              && param_type
+             /* Limit the ranger query to integral types as the rest
+                of this file uses value_range's, which only hold
+                integers and pointers.  */
+             && irange::supports_p (TREE_TYPE (arg))
              && get_range_query (cfun)->range_of_expr (vr, arg)
              && !vr.undefined_p ())
            {
-- 
2.37.1

Reply via email to