Here are some soft merge conflict resolutions…. Ok?
Index: ChangeLog.wide-int =================================================================== --- ChangeLog.wide-int (revision 206027) +++ ChangeLog.wide-int (working copy) @@ -340,6 +340,9 @@ * hooks.c (hook_bool_dint_dint_uint_bool_true): Removed. (hook_bool_wint_wint_uint_bool_true): New. + * internal-fn.c + (ubsan_expand_si_overflow_addsub_check): Use wide-int interfaces. + (ubsan_expand_si_overflow_mul_check): Likewise. * ipa-devirt.c (get_polymorphic_call_info): Use wide-int interfaces. * ipa-prop.c Index: internal-fn.c =================================================================== --- internal-fn.c (revision 206028) +++ internal-fn.c (working copy) @@ -237,12 +237,12 @@ ubsan_expand_si_overflow_addsub_check (t ; else if (TREE_CODE (arg0) == SSA_NAME) { - double_int arg0_min, arg0_max; + wide_int arg0_min, arg0_max; if (get_range_info (arg0, &arg0_min, &arg0_max) == VR_RANGE) { - if (!arg0_min.is_negative ()) + if (!wi::neg_p (arg0_min, TYPE_SIGN (TREE_TYPE (arg0)))) pos_neg = 1; - else if (arg0_max.is_negative ()) + else if (wi::neg_p (arg0_max, TYPE_SIGN (TREE_TYPE (arg0)))) pos_neg = 2; } if (pos_neg != 3) @@ -254,12 +254,12 @@ ubsan_expand_si_overflow_addsub_check (t } if (pos_neg == 3 && !CONST_INT_P (op1) && TREE_CODE (arg1) == SSA_NAME) { - double_int arg1_min, arg1_max; + wide_int arg1_min, arg1_max; if (get_range_info (arg1, &arg1_min, &arg1_max) == VR_RANGE) { - if (!arg1_min.is_negative ()) + if (!wi::neg_p (arg1_min, TYPE_SIGN (TREE_TYPE (arg1)))) pos_neg = 1; - else if (arg1_max.is_negative ()) + else if (wi::neg_p (arg1_max, TYPE_SIGN (TREE_TYPE (arg1)))) pos_neg = 2; } } @@ -508,37 +508,37 @@ ubsan_expand_si_overflow_mul_check (gimp if (TREE_CODE (arg0) == SSA_NAME) { - double_int arg0_min, arg0_max; + wide_int arg0_min, arg0_max; if (get_range_info (arg0, &arg0_min, &arg0_max) == VR_RANGE) { - if (arg0_max.sle (double_int::max_value (hprec, false)) - && double_int::min_value (hprec, false).sle (arg0_min)) + if (wi::les_p (arg0_max, wi::max_value (hprec, SIGNED)) + && wi::les_p (wi::min_value (hprec, SIGNED), arg0_min)) op0_small_p = true; - else if (arg0_max.sle (double_int::max_value (hprec, true)) - && (~double_int::max_value (hprec, - true)).sle (arg0_min)) + else if (wi::les_p (arg0_max, wi::max_value (hprec, UNSIGNED)) + && wi::les_p (~wi::max_value (hprec, UNSIGNED), + arg0_min)) op0_medium_p = true; - if (!arg0_min.is_negative ()) + if (!wi::neg_p (arg0_min, TYPE_SIGN (TREE_TYPE (arg0)))) op0_sign = 0; - else if (arg0_max.is_negative ()) + else if (wi::neg_p (arg0_max, TYPE_SIGN (TREE_TYPE (arg0)))) op0_sign = -1; } } if (TREE_CODE (arg1) == SSA_NAME) { - double_int arg1_min, arg1_max; + wide_int arg1_min, arg1_max; if (get_range_info (arg1, &arg1_min, &arg1_max) == VR_RANGE) { - if (arg1_max.sle (double_int::max_value (hprec, false)) - && double_int::min_value (hprec, false).sle (arg1_min)) + if (wi::les_p (arg1_max, wi::max_value (hprec, SIGNED)) + && wi::les_p (wi::min_value (hprec, SIGNED), arg1_min)) op1_small_p = true; - else if (arg1_max.sle (double_int::max_value (hprec, true)) - && (~double_int::max_value (hprec, - true)).sle (arg1_min)) + else if (wi::les_p (arg1_max, wi::max_value (hprec, UNSIGNED)) + && wi::les_p (~wi::max_value (hprec, UNSIGNED), + arg1_min)) op1_medium_p = true; - if (!arg1_min.is_negative ()) + if (!wi::neg_p (arg1_min, TYPE_SIGN (TREE_TYPE (arg1)))) op1_sign = 0; - else if (arg1_max.is_negative ()) + else if (wi::neg_p (arg1_max, TYPE_SIGN (TREE_TYPE (arg1)))) op1_sign = -1; } }