https://gcc.gnu.org/g:8f6dd185d16dec8ca9351a754f0ece153f89d85c

commit r15-7166-g8f6dd185d16dec8ca9351a754f0ece153f89d85c
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Thu Jan 23 20:03:36 2025 +0100

    vect: Avoid copying of uninitialized variable [PR118628]
    
    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.
    
    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.

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 c0550acf6b2b..1b639ae3b174 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -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;

Reply via email to