diff options
author | Torbjörn SVENSSON <torbjorn.svensson@foss.st.com> | 2022-10-25 11:45:40 +0200 |
---|---|---|
committer | Torbjörn SVENSSON <torbjorn.svensson@foss.st.com> | 2022-10-27 09:34:29 +0200 |
commit | 4e1d704243a4f3c4ded47cd0d02427bb7efef069 (patch) | |
tree | 6dac28bfcdb9679ccad95b61fcfe6d994d7d2e5b | |
parent | 27065374f172f05110b68fe1f452eed414c837bd (diff) | |
download | gcc-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>
-rw-r--r-- | gcc/ira.cc | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -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 (); |