https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107411

--- Comment #10 from qinzhao at gcc dot gnu.org ---
the following patch fixed this issue:
diff --git a/gcc/tree-ssa-uninit.cc b/gcc/tree-ssa-uninit.cc
index c555cf5cd50..eca727b010a 100644
--- a/gcc/tree-ssa-uninit.cc
+++ b/gcc/tree-ssa-uninit.cc
@@ -113,6 +113,18 @@ uninit_undefined_value_p (tree t)
   return !get_no_uninit_warning (SSA_NAME_VAR (t));
 }

+
+/* Get the name string for the VAR that defined with a call to .DEFERRED_INIT.
+ * Refer to routine gimple_add_init_for_auto_var.  */
+static const char *
+get_var_name (tree var)
+{
+  const char *var_name_str
+    = DECL_NAME (var) ? IDENTIFIER_POINTER (DECL_NAME (var))
+      : xasprintf ("D.%u", DECL_UID (var));
+  return var_name_str;
+}
+
 /* Emit warnings for uninitialized variables.  This is done in two passes.

    The first pass notices real uses of SSA names with undefined values.
@@ -224,8 +236,6 @@ warn_uninit (opt_code opt, tree t, tree var, gimple
*context,
             at alt_reloc = temp.
          */
          tree lhs_var = NULL_TREE;
-         tree lhs_var_name = NULL_TREE;
-         const char *lhs_var_name_str = NULL;

          /* Get the variable name from the 3rd argument of call.  */
          tree var_name = gimple_call_arg (var_def_stmt, 2);
@@ -239,11 +249,12 @@ warn_uninit (opt_code opt, tree t, tree var, gimple
*context,
              else if (TREE_CODE (gimple_assign_lhs (context)) == SSA_NAME)
                lhs_var = SSA_NAME_VAR (gimple_assign_lhs (context));
            }
-         if (lhs_var
-             && (lhs_var_name = DECL_NAME (lhs_var))
-             && (lhs_var_name_str = IDENTIFIER_POINTER (lhs_var_name))
-             && (strcmp (lhs_var_name_str, var_name_str) == 0))
-           return;
+         if (lhs_var)
+           {
+             const char *lhs_var_name_str = get_var_name (lhs_var);
+             if (strcmp (lhs_var_name_str, var_name_str) == 0)
+               return;
+           }
          gcc_assert (var_name_str && var_def_stmt);
        }
     }

Reply via email to