From fa5556deb30c805414137700342441f3186b075a Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 6 Mar 2013 11:24:07 +0000 Subject: [PATCH] re PR tree-optimization/56294 (BOOT_CFLAGS='-O2 -g -fno-ipa-sra' leads to bootstrap comparison failure) 2013-03-06 Richard Biener PR middle-end/56294 * tree-into-ssa.c (insert_phi_nodes_for): Add dumping. (insert_updated_phi_nodes_compare_uids): New function. (update_ssa): Sort symbols_to_rename after UID before traversing it to insert PHI nodes. From-SVN: r196488 --- gcc/ChangeLog | 8 ++++++++ gcc/tree-into-ssa.c | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3bb0520..3eaab4c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2013-03-06 Richard Biener + PR middle-end/56294 + * tree-into-ssa.c (insert_phi_nodes_for): Add dumping. + (insert_updated_phi_nodes_compare_uids): New function. + (update_ssa): Sort symbols_to_rename after UID before + traversing it to insert PHI nodes. + +2013-03-06 Richard Biener + PR middle-end/50494 * tree-vect-data-refs.c (vect_can_force_dr_alignment_p): Do not adjust alignment of DECL_IN_CONSTANT_POOL decls. diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c index 323bbb3..65c15da 100644 --- a/gcc/tree-into-ssa.c +++ b/gcc/tree-into-ssa.c @@ -969,6 +969,12 @@ insert_phi_nodes_for (tree var, bitmap phi_insertion_points, bool update_p) if (update_p) mark_block_for_update (bb); + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, "creating PHI node in block #%d for ", bb_index); + print_generic_expr (dump_file, var, TDF_SLIM); + fprintf (dump_file, "\n"); + } phi = NULL; if (TREE_CODE (var) == SSA_NAME) @@ -3040,6 +3046,17 @@ insert_updated_phi_nodes_for (tree var, bitmap_head *dfs, bitmap blocks, BITMAP_FREE (idf); } +/* Sort symbols_to_rename after their DECL_UID. */ + +static int +insert_updated_phi_nodes_compare_uids (const void *a, const void *b) +{ + const_tree syma = *(const const_tree *)a; + const_tree symb = *(const const_tree *)b; + if (DECL_UID (syma) == DECL_UID (symb)) + return 0; + return DECL_UID (syma) < DECL_UID (symb) ? -1 : 1; +} /* Given a set of newly created SSA names (NEW_SSA_NAMES) and a set of existing SSA names (OLD_SSA_NAMES), update the SSA form so that: @@ -3250,6 +3267,7 @@ update_ssa (unsigned update_flags) sbitmap_free (tmp); } + symbols_to_rename.qsort (insert_updated_phi_nodes_compare_uids); FOR_EACH_VEC_ELT (symbols_to_rename, i, sym) insert_updated_phi_nodes_for (sym, dfs, blocks_to_update, update_flags); -- 2.7.4