[gcc r16-701] aarch64: Fix an oversight in aarch64_evpc_reencode
Pengxuan Zheng
pzheng@gcc.gnu.org
Fri May 16 18:22:57 GMT 2025
https://gcc.gnu.org/g:d77c3bc1c35e3032b91648dbef4e0ef1f6020017
commit r16-701-gd77c3bc1c35e3032b91648dbef4e0ef1f6020017
Author: Pengxuan Zheng <quic_pzheng@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. */
More information about the Gcc-cvs
mailing list