]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
vect: Avoid copying of uninitialized variable [PR118628]
authorJakub Jelinek <jakub@redhat.com>
Thu, 23 Jan 2025 19:03:36 +0000 (20:03 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 23 Jan 2025 19:03:36 +0000 (20:03 +0100)
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  <jakub@redhat.com>

PR tree-optimization/118628
* tree-vect-stmts.cc (vectorizable_store, vectorizable_load):
Initialize offvar to NULL_TREE.

gcc/tree-vect-stmts.cc

index c0550acf6b2b231d1800a331a352668a3daf3d10..1b639ae3b174779bb838d0f7ce4886d84ecafcfe 100644 (file)
@@ -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;