aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-ivopts.c
diff options
context:
space:
mode:
authorAndrew Stubbs <ams@codesourcery.com>2020-01-30 14:06:12 +0000
committerAndrew Stubbs <ams@codesourcery.com>2020-01-31 14:31:38 +0000
commitc63ae7f0b8bb86b25255d26425887b75489ab162 (patch)
tree2db010e7bd87c39cdf136d3794733faf2aabec40 /gcc/tree-ssa-loop-ivopts.c
parent182ce042e7325a05a87fb34d2eaf6db3666fbd7f (diff)
downloadgcc-c63ae7f0b8bb86b25255d26425887b75489ab162.zip
gcc-c63ae7f0b8bb86b25255d26425887b75489ab162.tar.gz
gcc-c63ae7f0b8bb86b25255d26425887b75489ab162.tar.bz2
Fix fast-math-pr55281.c ICE
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.
Diffstat (limited to 'gcc/tree-ssa-loop-ivopts.c')
-rw-r--r--gcc/tree-ssa-loop-ivopts.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index a21f307..1ce6d8b 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -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);
}
}