diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2021-01-21 16:33:49 +0000 |
---|---|---|
committer | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2021-01-22 16:40:57 +0000 |
commit | 9d33785f57daf29dc0c106c919da319fe1906bc6 (patch) | |
tree | 5ef5cda41196b8498b67440934cc6cf83cec8f57 /gcc/tree-ssa-math-opts.c | |
parent | eee8ed2f22b36dfe64a9516171871476e8ede477 (diff) | |
download | gcc-9d33785f57daf29dc0c106c919da319fe1906bc6.zip gcc-9d33785f57daf29dc0c106c919da319fe1906bc6.tar.gz gcc-9d33785f57daf29dc0c106c919da319fe1906bc6.tar.bz2 |
tree-ssa-mathopts: Use proper poly_int64 comparison with param_avoid_fma_max_bits [PR 98766]
We ICE here because we end up comparing a poly_int64 with a scalar using
<= rather than maybe_le.
This patch fixes that in the way rich suggests in the PR.
gcc/ChangeLog:
PR tree-optimization/98766
* tree-ssa-math-opts.c (convert_mult_to_fma): Use maybe_le when
comparing against type size with param_avoid_fma_max_bits.
gcc/testsuite/ChangeLog:
PR tree-optimization/98766
* gcc.dg/pr98766.c: New test.
Diffstat (limited to 'gcc/tree-ssa-math-opts.c')
-rw-r--r-- | gcc/tree-ssa-math-opts.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c index d6201d3..c4a6492 100644 --- a/gcc/tree-ssa-math-opts.c +++ b/gcc/tree-ssa-math-opts.c @@ -3252,8 +3252,8 @@ convert_mult_to_fma (gimple *mul_stmt, tree op1, tree op2, bool check_defer = (state->m_deferring_p - && (tree_to_shwi (TYPE_SIZE (type)) - <= param_avoid_fma_max_bits)); + && maybe_le (tree_to_poly_int64 (TYPE_SIZE (type)), + param_avoid_fma_max_bits)); bool defer = check_defer; bool seen_negate_p = false; /* Make sure that the multiplication statement becomes dead after |