aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2025-07-10 22:00:41 +0100
committerRichard Sandiford <richard.sandiford@arm.com>2025-07-10 22:00:41 +0100
commita1e616955e9971fda54a160a49e6cf70dd838a0c (patch)
tree27876aca14d33ab42a1f8d94150404f89d8fe7ca
parente53f481141f1415847329f3bef906e5eb91226ad (diff)
downloadgcc-a1e616955e9971fda54a160a49e6cf70dd838a0c.zip
gcc-a1e616955e9971fda54a160a49e6cf70dd838a0c.tar.gz
gcc-a1e616955e9971fda54a160a49e6cf70dd838a0c.tar.bz2
aarch64: Guard VF-based costing with !m_costing_for_scalar
g:4b47acfe2b626d1276e229a0cf165e934813df6c caused a segfault in aarch64_vector_costs::analyze_loop_vinfo when costing scalar code, since we'd end up dividing by a zero VF. Much of the structure of the aarch64 costing code dates from a stage 4 patch, when we had to work within the bounds of what the target-independent code did. Some of it could do with a rework now that we're not so constrained. This patch is therefore an emergency fix rather than the best long-term solution. I'll revisit when I have more time to think about it. gcc/ * config/aarch64/aarch64.cc (aarch64_vector_costs::add_stmt_cost): Guard VF-based costing with !m_costing_for_scalar.
-rw-r--r--gcc/config/aarch64/aarch64.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index 27c315f..10b8ed5 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -17932,7 +17932,7 @@ aarch64_vector_costs::add_stmt_cost (int count, vect_cost_for_stmt kind,
/* Do one-time initialization based on the vinfo. */
loop_vec_info loop_vinfo = dyn_cast<loop_vec_info> (m_vinfo);
- if (!m_analyzed_vinfo)
+ if (!m_analyzed_vinfo && !m_costing_for_scalar)
{
if (loop_vinfo)
analyze_loop_vinfo (loop_vinfo);