Hi Jeff, I missed a load of test failures while on vacation and just noticed that the fix you did for a potentially uninitialized variable warning is overwriting the stack and breaking MSA in MIPS.
I guess you may have intended to set the length appropriately and only zero the elements that would not be set in the loop: memset (&orig_perm[nelt], 0, MAX_VECT_LEN - nelt); but I switched it to just zero initialise the whole array for simplicity in the patch below. I thought I'd check with you before committing. Obviously I'd like to apply this to GCC 7 branch as well. Thanks, Matthew gcc/ * config/mips/mips.c (mips_expand_vec_perm_const): Re-fix uninitialized variable warning to avoid buffer overrun. --- gcc/ChangeLog | 5 +++++ gcc/config/mips/mips.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c908048..80d3436 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-04-20 Matthew Fortune <matthew.fort...@imgtec.com> + + * config/mips/mips.c (mips_expand_vec_perm_const): Re-fix + uninitialized variable warning to avoid buffer overrun. + 2017-04-20 Alexander Monakov <amona...@ispras.ru> PR other/71250 diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index b35fba7..6bfd86a 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -21358,7 +21358,7 @@ mips_expand_vec_perm_const (rtx operands[4]) /* This is overly conservative, but ensures we don't get an uninitialized warning on ORIG_PERM. */ - memset (&orig_perm[nelt], 0, MAX_VECT_LEN); + memset (orig_perm, 0, MAX_VECT_LEN); for (i = which = 0; i < nelt; ++i) { rtx e = XVECEXP (sel, 0, i); -- 2.2.1