https://gcc.gnu.org/g:0887961f9e0e7ea6b417bfb02787cfdaea41dbe4

commit r16-3797-g0887961f9e0e7ea6b417bfb02787cfdaea41dbe4
Author: Richard Biener <rguent...@suse.de>
Date:   Fri Sep 5 14:47:33 2025 +0200

    tree-optimization/121703 - UBSAN error with moving from uninit data
    
    The PR reports
    
    vectorizer.h:276:3: runtime error: load of value 32695, which is not a 
valid value for type 'internal_fn'
    
    which I believe is from
    
          slp_node->data = new vect_load_store_data (std::move (ls));
    
    where 'ls' can be partly uninitialized (and that data will be not
    used, but of course the move CTOR doesn't know this).  The following
    tries to fix that by using value-initialization of 'ls'.
    
            PR tree-optimization/121703
            * tree-vect-stmts.cc (vectorizable_store): Value-initialize ls.
            (vectorizable_load): Likewise.

Diff:
---
 gcc/tree-vect-stmts.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index 9fcc2fd08498..7eabf169a2be 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -7881,7 +7881,7 @@ vectorizable_store (vec_info *vinfo,
   if (!STMT_VINFO_DATA_REF (stmt_info))
     return false;
 
-  vect_load_store_data _ls_data;
+  vect_load_store_data _ls_data{};
   vect_load_store_data &ls = slp_node->get_data (_ls_data);
   if (cost_vec
       && !get_load_store_type (vinfo, stmt_info, vectype, slp_node, mask_node,
@@ -9451,7 +9451,7 @@ vectorizable_load (vec_info *vinfo,
   else
     group_size = 1;
 
-  vect_load_store_data _ls_data;
+  vect_load_store_data _ls_data{};
   vect_load_store_data &ls = slp_node->get_data (_ls_data);
   if (cost_vec
       && !get_load_store_type (vinfo, stmt_info, vectype, slp_node, mask_node,

Reply via email to