Hi! vectorizable_{store,load} does roughly tree offvar; tree running_off; if (!costing_p) { ... initialize offvar ... } running_off = offvar; for (...) { if (costing_p) { ... continue; } ... use running_off ... } so, it copies unconditionally sometimes uninitialized variable (but then uses the copied variable only if it was set to something initialized). Still, I think it is better to avoid copying around maybe uninitialized vars.
Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? 2025-01-23 Jakub Jelinek <ja...@redhat.com> PR tree-optimization/118628 * tree-vect-stmts.cc (vectorizable_store, vectorizable_load): Initialize offvar to NULL_TREE. --- gcc/tree-vect-stmts.cc.jj 2025-01-23 11:10:48.357722650 +0100 +++ gcc/tree-vect-stmts.cc 2025-01-23 13:24:23.200875907 +0100 @@ -8645,7 +8645,7 @@ vectorizable_store (vec_info *vinfo, gimple_stmt_iterator incr_gsi; bool insert_after; gimple *incr; - tree offvar; + tree offvar = NULL_TREE; tree ivstep; tree running_off; tree stride_base, stride_step, alias_off; @@ -10603,7 +10603,7 @@ vectorizable_load (vec_info *vinfo, { gimple_stmt_iterator incr_gsi; bool insert_after; - tree offvar; + tree offvar = NULL_TREE; tree ivstep; tree running_off; vec<constructor_elt, va_gc> *v = NULL; Jakub