Fix fast-math-pr55281.c ICE
authorAndrew Stubbs <ams@codesourcery.com>
Thu, 30 Jan 2020 14:06:12 +0000 (14:06 +0000)
committerAndrew Stubbs <ams@codesourcery.com>
Fri, 31 Jan 2020 14:31:38 +0000 (14:31 +0000)
2020-01-31  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* tree-ssa-loop-ivopts.c (get_iv): Use sizetype for zero-step.
(find_inv_vars_cb): Likewise.

gcc/ChangeLog
gcc/tree-ssa-loop-ivopts.c

index 8b7ad4a9f3806f9449875b4128a021857b7b71e8..eb5105f0b19b387ea66795d272325cafcd220f7c 100644 (file)
@@ -1,3 +1,8 @@
+2020-01-31  Andrew Stubbs  <ams@codesourcery.com>
+
+       * tree-ssa-loop-ivopts.c (get_iv): Use sizetype for zero-step.
+       (find_inv_vars_cb): Likewise.
+
 2020-01-31  David Malcolm  <dmalcolm@redhat.com>
 
        * calls.c (special_function_p): Split out the check for DECL_NAME
index a21f3077e74c046cac1be0b47f688beb17afb619..1ce6d8b372b305f3db897e97844b4e4f5abbb787 100644 (file)
@@ -1246,7 +1246,11 @@ get_iv (struct ivopts_data *data, tree var)
 
       if (!bb
          || !flow_bb_inside_loop_p (data->current_loop, bb))
-       set_iv (data, var, var, build_int_cst (type, 0), true);
+       {
+         if (POINTER_TYPE_P (type))
+           type = sizetype;
+         set_iv (data, var, var, build_int_cst (type, 0), true);
+       }
     }
 
   return name_info (data, var)->iv;
@@ -2990,7 +2994,10 @@ find_inv_vars_cb (tree *expr_p, int *ws ATTRIBUTE_UNUSED, void *data)
 
       if (!bb || !flow_bb_inside_loop_p (idata->current_loop, bb))
        {
-         set_iv (idata, op, op, build_int_cst (TREE_TYPE (op), 0), true);
+         tree steptype = TREE_TYPE (op);
+         if (POINTER_TYPE_P (steptype))
+           steptype = sizetype;
+         set_iv (idata, op, op, build_int_cst (steptype, 0), true);
          record_invariant (idata, op, false);
        }
     }