https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81278
--- Comment #16 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Seems a different order in release_ssa_name in that function, in one case it is 198, 2, 199, 23, 40, in the other case 199, 2, 40, 23, 198. Used --- tree-ssanames.c.xx 2017-07-01 10:15:12.000000000 +0200 +++ tree-ssanames.c 2017-07-03 14:43:13.278636615 +0200 @@ -29,6 +29,7 @@ along with GCC; see the file COPYING3. #include "stor-layout.h" #include "tree-into-ssa.h" #include "tree-ssa.h" +#include "tree-pretty-print.h" /* Rewriting a function into SSA form can create a huge number of SSA_NAMEs, many of which may be thrown away shortly after their creation if jumps @@ -309,6 +310,14 @@ make_ssa_name_fn (struct function *fn, t else SSA_NAME_RANGE_INFO (t) = NULL; +{ +FILE *f = fopen ("/tmp/ssanames", "a"); +fprintf (f, "@@@make_ssa_name "); +print_generic_expr (f, t, TDF_VOPS|TDF_MEMSYMS); +fprintf (f, " %s\n", IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (current_function_decl))); +fclose (f); +} + SSA_NAME_IN_FREE_LIST (t) = 0; SSA_NAME_IS_DEFAULT_DEF (t) = 0; imm = &(SSA_NAME_IMM_USE_NODE (t)); @@ -560,6 +569,14 @@ release_ssa_name_fn (struct function *fn int saved_ssa_name_version = SSA_NAME_VERSION (var); use_operand_p imm = &(SSA_NAME_IMM_USE_NODE (var)); +{ +FILE *f = fopen ("/tmp/ssanames", "a"); +fprintf (f, "@@@release_ssa_name "); +print_generic_expr (f, var, TDF_VOPS|TDF_MEMSYMS); +fprintf (f, " %s\n", IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (current_function_decl))); +fclose (f); +} + if (MAY_HAVE_DEBUG_STMTS) insert_debug_temp_for_var_def (NULL, var); hack to find that out. Now to debug where those release_ssa_name calls come from and what is the difference.