aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>2022-10-25 11:45:40 +0200
committerTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>2022-10-27 09:34:29 +0200
commit4e1d704243a4f3c4ded47cd0d02427bb7efef069 (patch)
tree6dac28bfcdb9679ccad95b61fcfe6d994d7d2e5b /gcc
parent27065374f172f05110b68fe1f452eed414c837bd (diff)
downloadgcc-4e1d704243a4f3c4ded47cd0d02427bb7efef069.zip
gcc-4e1d704243a4f3c4ded47cd0d02427bb7efef069.tar.gz
gcc-4e1d704243a4f3c4ded47cd0d02427bb7efef069.tar.bz2
IRA: Make sure array is big enough
In commit 081c96621da, the call to resize_reg_info() was moved before the call to remove_scratches() and the latter one can increase the number of regs and that would cause an out of bounds usage on the reg_renumber global array. Without this patch, the following testcase randomly fails with: during RTL pass: ira In file included from /src/gcc/testsuite/gcc.dg/compat/struct-by-value-5b_y.c:13: /src/gcc/testsuite/gcc.dg/compat/struct-by-value-5b_y.c: In function 'checkgSf13': /src/gcc/testsuite/gcc.dg/compat/fp-struct-test-by-value-y.h:28:1: internal compiler error: Segmentation fault /src/gcc/testsuite/gcc.dg/compat/struct-by-value-5b_y.c:22:1: note: in expansion of macro 'TEST' gcc/ChangeLog: * ira.cc: Resize array after reg number increased. Co-Authored-By: Yvan ROUX <yvan.roux@foss.st.com> Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ira.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/ira.cc b/gcc/ira.cc
index 42c9cea..d28a67b 100644
--- a/gcc/ira.cc
+++ b/gcc/ira.cc
@@ -5718,6 +5718,7 @@ ira (FILE *f)
regstat_free_ri ();
regstat_init_n_sets_and_refs ();
regstat_compute_ri ();
+ resize_reg_info ();
};
int max_regno_before_rm = max_reg_num ();