diff --git a/gcc/lto-symtab.c b/gcc/lto-symtab.c
index 0b0cdac..295fd37 100644
--- a/gcc/lto-symtab.c
+++ b/gcc/lto-symtab.c
@@ -443,10 +443,6 @@ lto_symtab_merge_decls_1 (symtab_node first)
 
   symtab_prevail_in_asm_name_hash (prevailing);
 
-  /* Record the prevailing variable.  */
-  if (TREE_CODE (prevailing->symbol.decl) == VAR_DECL)
-    vec_safe_push (lto_global_var_decls, prevailing->symbol.decl);
-
   /* Diagnose mismatched objects.  */
   for (e = prevailing->symbol.next_sharing_asm_name;
        e; e = e->symbol.next_sharing_asm_name)
diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c
index 376af85..e567cb0 100644
--- a/gcc/lto/lto.c
+++ b/gcc/lto/lto.c
@@ -3380,6 +3380,8 @@ lto_main (void)
 	do_whole_program_analysis ();
       else
 	{
+	  struct varpool_node *vnode;
+
 	  timevar_start (TV_PHASE_OPT_GEN);
 
 	  materialize_cgraph ();
@@ -3397,6 +3399,10 @@ lto_main (void)
 	     this.  */
 	  if (flag_lto_report)
 	    print_lto_report_1 ();
+
+	  /* Record the global variables.  */
+	  FOR_EACH_DEFINED_VARIABLE (vnode)
+	    vec_safe_push (lto_global_var_decls, vnode->symbol.decl);
 	}
     }
 
