diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2021-03-30 16:42:17 +0100 |
---|---|---|
committer | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2021-03-30 16:42:17 +0100 |
commit | c277abd9cd3d10db59f9965d7d6356868da42a9f (patch) | |
tree | 1dd805deee9967d66d476069a6c0edd32eebf95e | |
parent | 19199a6f2b0f4ce4b100856c78706d56a16b1956 (diff) | |
download | gcc-c277abd9cd3d10db59f9965d7d6356868da42a9f.zip gcc-c277abd9cd3d10db59f9965d7d6356868da42a9f.tar.gz gcc-c277abd9cd3d10db59f9965d7d6356868da42a9f.tar.bz2 |
aarch64: PR target/99820: Guard on available SVE issue info before using
This fixes a simple segfault ICE when using the use_new_vector_costs tunable with a CPU tuning that it wasn't intended for.
I'm not adding a testcase here as we intend to remove the tunable for GCC 12 anyway (the new costing logic will remain and will benefit
from this extra check, but the -moverride option will no longer exist).
gcc/ChangeLog:
PR target/99820
* config/aarch64/aarch64.c (aarch64_analyze_loop_vinfo): Check for
available issue_info before using it.
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index a573850..5eda9e8 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -14460,7 +14460,9 @@ aarch64_analyze_loop_vinfo (loop_vec_info loop_vinfo, /* Record the issue information for any SVE WHILE instructions that the loop needs. */ auto *issue_info = aarch64_tune_params.vec_costs->issue_info; - if (issue_info->sve && !LOOP_VINFO_MASKS (loop_vinfo).is_empty ()) + if (issue_info + && issue_info->sve + && !LOOP_VINFO_MASKS (loop_vinfo).is_empty ()) { unsigned int num_masks = 0; rgroup_controls *rgm; |