The following fixes a bit-load.c bug as well as avoids the warnings
for two other cases.

Bootstrapped and tested on x86_64-unknown-linux-gnu.

Ok?

Thanks,
Richard.

2017-02-21  Richard Biener  <rguent...@suse.de>

        * bt-load.c (compute_defs_uses_and_gen): Clear call_saved.
        * fixed-value.c (fixed_from_string): Use wi::ulow and wi::uhigh.
        (fixed_convert_from_real): Likewise.
        * ipa-cp.c (ipcp_store_vr_results): Do not uselessly initialize
        VR_VARYING min/max.

Index: gcc/bt-load.c
===================================================================
--- gcc/bt-load.c       (revision 245620)
+++ gcc/bt-load.c       (working copy)
@@ -543,6 +543,7 @@ compute_defs_uses_and_gen (btr_heap_t *a
                      int i;
 
                      /* Check for sibcall.  */
+                     CLEAR_HARD_REG_SET (call_saved);
                      if (GET_CODE (pat) == PARALLEL)
                        for (i = XVECLEN (pat, 0) - 1; i >= 0; i--)
                          if (ANY_RETURN_P (XVECEXP (pat, 0, i)))
Index: gcc/fixed-value.c
===================================================================
--- gcc/fixed-value.c   (revision 245620)
+++ gcc/fixed-value.c   (working copy)
@@ -130,8 +130,8 @@ fixed_from_string (FIXED_VALUE_TYPE *f,
   real_arithmetic (&fixed_value, MULT_EXPR, &real_value, &base_value);
   wide_int w = real_to_integer (&fixed_value, &fail,
                                GET_MODE_PRECISION (mode));
-  f->data.low = w.elt (0);
-  f->data.high = w.elt (1);
+  f->data.low = w.ulow ();
+  f->data.high = w.uhigh ();
 
   if (temp == FIXED_MAX_EPS && ALL_FRACT_MODE_P (f->mode))
     {
@@ -1049,8 +1049,8 @@ fixed_convert_from_real (FIXED_VALUE_TYP
 
   wide_int w = real_to_integer (&fixed_value, &fail,
                                GET_MODE_PRECISION (mode));
-  f->data.low = w.elt (0);
-  f->data.high = w.elt (1);
+  f->data.low = w.ulow ();
+  f->data.high = w.uhigh ();
   temp = check_real_for_fixed_mode (&real_value, mode);
   if (temp == FIXED_UNDERFLOW) /* Minimum.  */
     {
Index: gcc/ipa-cp.c
===================================================================
--- gcc/ipa-cp.c        (revision 245620)
+++ gcc/ipa-cp.c        (working copy)
@@ -4959,7 +4959,6 @@ ipcp_store_vr_results (void)
            {
              vr.known = false;
              vr.type = VR_VARYING;
-             vr.min = vr.max = wi::zero (INT_TYPE_SIZE);
            }
          ts->m_vr->quick_push (vr);
        }

Reply via email to