This removes one odd piece in add_local_variables:

   FOR_EACH_LOCAL_DECL (callee, ix, var)
-    if (TREE_STATIC (var) && !TREE_ASM_WRITTEN (var))
-      {
-       if (!check_var_ann
-           || (var_ann (var) && add_referenced_var (var)))
-         add_local_decl (caller, var);
-      }
-    else if (!can_be_nonlocal (var, id))

now that we only have a var-ann if a var is in referenced vars
but no TREE_STATIC vars are in referenced vars the check_var_ann == true
path is never reached.  The caller with check_var_ann == false is
tree_function_versioning and I don't understand why it should
specifically care about !TREE_ASM_WRITTEN.  We don't have a testcase
that breaks, so the following patch simply removes the code.

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

2012-07-20  Richard Guenther  <rguent...@suse.de>

        * tree-inline.c (add_local_variables): Remove check_var_ann
        parameter and dead code.
        (expand_call_inline): Adjust.
        (tree_function_versioning): Likewise.

Index: gcc/tree-inline.c
===================================================================
--- gcc/tree-inline.c   (revision 189656)
+++ gcc/tree-inline.c   (working copy)
@@ -3781,19 +3755,13 @@ prepend_lexical_block (tree current_bloc
 
 static inline void
 add_local_variables (struct function *callee, struct function *caller,
-                    copy_body_data *id, bool check_var_ann)
+                    copy_body_data *id)
 {
   tree var;
   unsigned ix;
 
   FOR_EACH_LOCAL_DECL (callee, ix, var)
-    if (TREE_STATIC (var) && !TREE_ASM_WRITTEN (var))
-      {
-       if (!check_var_ann
-           || (var_ann (var) && add_referenced_var (var)))
-         add_local_decl (caller, var);
-      }
-    else if (!can_be_nonlocal (var, id))
+    if (!can_be_nonlocal (var, id))
       {
         tree new_var = remap_decl (var, id);
 
@@ -4027,7 +3995,7 @@ expand_call_inline (basic_block bb, gimp
   use_retvar = declare_return_variable (id, return_slot, modify_dest, bb);
 
   /* Add local vars in this inlined callee to caller.  */
-  add_local_variables (id->src_cfun, cfun, id, true);
+  add_local_variables (id->src_cfun, cfun, id);
 
   if (dump_file && (dump_flags & TDF_DETAILS))
     {
@@ -5255,7 +5215,7 @@ tree_function_versioning (tree old_decl,
 
   if (!VEC_empty (tree, DECL_STRUCT_FUNCTION (old_decl)->local_decls))
     /* Add local vars.  */
-    add_local_variables (DECL_STRUCT_FUNCTION (old_decl), cfun, &id, false);
+    add_local_variables (DECL_STRUCT_FUNCTION (old_decl), cfun, &id);
 
   if (DECL_RESULT (old_decl) == NULL_TREE)
     ;

Reply via email to