mips.c (mips_multi_add): Zero initialize the newly added member.
authorJeff Law <law@redhat.com>
Tue, 4 Apr 2017 15:30:30 +0000 (09:30 -0600)
committerJeff Law <law@gcc.gnu.org>
Tue, 4 Apr 2017 15:30:30 +0000 (09:30 -0600)
* config/mips/mips.c (mips_multi_add): Zero initialize the newly
added member.
(mips_expand_vec_perm_const): Initialize elements in orig_perm
that are not set by the loop over the elements.

From-SVN: r246681

gcc/ChangeLog
gcc/config/mips/mips.c

index 66d6cb719b30ba82975a2f085a7a12e93fb2d4c0..c207588248446c51ae6764f6fffb7355b7a8017f 100644 (file)
@@ -1,3 +1,10 @@
+2017-04-04  Jeff Law  <law@redhat.com>
+
+       * config/mips/mips.c (mips_multi_add): Zero initialize the newly
+       added member.
+       (mips_expand_vec_perm_const): Initialize elements in orig_perm
+       that are not set by the loop over the elements.
+       
 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/80286
index 42943e01908b5aee7cf6374bb64c90a6a9f7521e..b35fba7e2ad91e0f6b47d224e7bc55d74d128827 100644 (file)
@@ -4574,12 +4574,13 @@ mips_multi_start (void)
   mips_multi_num_insns = 0;
 }
 
-/* Add a new, uninitialized member to the current multi-insn sequence.  */
+/* Add a new, zero initialized member to the current multi-insn sequence.  */
 
 static struct mips_multi_member *
 mips_multi_add (void)
 {
   mips_multi_member empty;
+  memset (&empty, 0, sizeof (empty));
   return mips_multi_members.safe_push (empty);
 }
 
@@ -21355,6 +21356,9 @@ mips_expand_vec_perm_const (rtx operands[4])
   d.nelt = nelt = GET_MODE_NUNITS (d.vmode);
   d.testing_p = false;
 
+  /* This is overly conservative, but ensures we don't get an
+     uninitialized warning on ORIG_PERM.  */
+  memset (&orig_perm[nelt], 0, MAX_VECT_LEN);
   for (i = which = 0; i < nelt; ++i)
     {
       rtx e = XVECEXP (sel, 0, i);