https://gcc.gnu.org/g:d77c3bc1c35e3032b91648dbef4e0ef1f6020017

commit r16-701-gd77c3bc1c35e3032b91648dbef4e0ef1f6020017
Author: Pengxuan Zheng <quic_pzh...@quicinc.com>
Date:   Thu May 15 17:52:29 2025 -0700

    aarch64: Fix an oversight in aarch64_evpc_reencode
    
    Some fields (e.g., zero_op0_p and zero_op1_p) of the struct "newd" may be 
left
    uninitialized in aarch64_evpc_reencode. This can cause reading of 
uninitialized
    data. I found this oversight when testing my patches on and/fmov
    optimizations. This patch fixes the bug by zero initializing the struct.
    
    Pushed as obvious after bootstrap/test on aarch64-linux-gnu.
    
    gcc/ChangeLog:
    
            * config/aarch64/aarch64.cc (aarch64_evpc_reencode): Zero initialize
            newd.

Diff:
---
 gcc/config/aarch64/aarch64.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index 901aa6ea68a8..f5552e4b86ce 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -26277,7 +26277,7 @@ aarch64_evpc_trn (struct expand_vec_perm_d *d)
 static bool
 aarch64_evpc_reencode (struct expand_vec_perm_d *d)
 {
-  expand_vec_perm_d newd;
+  expand_vec_perm_d newd = {};
 
   /* The subregs that we'd create are not supported for big-endian SVE;
      see aarch64_modes_compatible_p for details.  */

Reply via email to