Index: tree-ssa.c
===================================================================
--- tree-ssa.c	(revision 164507)
+++ tree-ssa.c	(working copy)
@@ -1944,10 +1944,11 @@ maybe_optimize_var (tree var, bitmap add
   return update_vops;
 }
 
-/* Compute TREE_ADDRESSABLE and DECL_GIMPLE_REG_P for local variables.  */
+/* When possible, clear TREE_ADDRESSABLE bit or set DECL_GIMPLE_REG_P bit for
+   local variables.  */
 
 void
-execute_update_addresses_taken (bool do_optimize)
+execute_update_addresses_taken (void)
 {
   tree var;
   gimple_stmt_iterator gsi;
@@ -2047,18 +2048,13 @@ execute_update_addresses_taken (bool do_
 	}
     }
 
-  /* When possible, clear ADDRESSABLE bit or set the REGISTER bit
-     and mark variable for conversion into SSA.  */
-  if (optimize && do_optimize)
-    {
-      /* We cannot iterate over all referenced vars as that can contain
-	 unused vars from BLOCK trees which cause code generation
-	 differences for -g vs. -g0.  */
-      for (var = DECL_ARGUMENTS (cfun->decl); var; var = DECL_CHAIN (var))
-	update_vops |= maybe_optimize_var (var, addresses_taken, not_reg_needs);
-      FOR_EACH_VEC_ELT (tree, cfun->local_decls, i, var)
-	update_vops |= maybe_optimize_var (var, addresses_taken, not_reg_needs);
-    }
+  /* We cannot iterate over all referenced vars because that can contain
+     unused vars from BLOCK trees, which causes code generation differences
+     for -g vs. -g0.  */
+  for (var = DECL_ARGUMENTS (cfun->decl); var; var = DECL_CHAIN (var))
+    update_vops |= maybe_optimize_var (var, addresses_taken, not_reg_needs);
+  FOR_EACH_VEC_ELT (tree, cfun->local_decls, i, var)
+    update_vops |= maybe_optimize_var (var, addresses_taken, not_reg_needs);
 
   /* Operand caches needs to be recomputed for operands referencing the updated
      variables.  */
Index: tree-flow.h
===================================================================
--- tree-flow.h	(revision 164507)
+++ tree-flow.h	(working copy)
@@ -559,7 +559,7 @@ extern void delete_tree_ssa (void);
 extern bool ssa_undefined_value_p (tree);
 extern void warn_uninit (tree, const char *, void *);
 extern unsigned int warn_uninitialized_vars (bool);
-extern void execute_update_addresses_taken (bool);
+extern void execute_update_addresses_taken (void);
 
 /* Call-back function for walk_use_def_chains().  At each reaching
    definition, a function with this prototype is called.  */
Index: passes.c
===================================================================
--- passes.c	(revision 164507)
+++ passes.c	(working copy)
@@ -1209,12 +1209,12 @@ execute_function_todo (void *data)
     }
 
   if (flags & TODO_update_address_taken)
-    execute_update_addresses_taken (true);
+    execute_update_addresses_taken ();
 
   if (flags & TODO_rebuild_alias)
     {
       if (!(flags & TODO_update_address_taken))
-	execute_update_addresses_taken (true);
+	execute_update_addresses_taken ();
       compute_may_aliases ();
     }
 
