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. */