diff options
author | Daniel Jacobowitz <dan@codesourcery.com> | 2007-08-01 16:53:01 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@gcc.gnu.org> | 2007-08-01 16:53:01 +0000 |
commit | 62b0d9ecf809e007149b3921256ba6999e95dc89 (patch) | |
tree | d02919ec89b4a0c74b6a0015731011335652b7ca /gcc/tree-ssa-coalesce.c | |
parent | 08e7e8cb97f7b79d945ac7a53102cc94ce6f433c (diff) | |
download | gcc-62b0d9ecf809e007149b3921256ba6999e95dc89.zip gcc-62b0d9ecf809e007149b3921256ba6999e95dc89.tar.gz gcc-62b0d9ecf809e007149b3921256ba6999e95dc89.tar.bz2 |
re PR tree-optimization/32919 (SSA corruption because of abnormal edges and PRE)
PR tree-optimization/32919
* tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
* tree-ssa-coalesce.c (ssa_conflicts_dump): New.
(coalesce_ssa_name): Call it.
From-SVN: r127132
Diffstat (limited to 'gcc/tree-ssa-coalesce.c')
-rw-r--r-- | gcc/tree-ssa-coalesce.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/tree-ssa-coalesce.c b/gcc/tree-ssa-coalesce.c index 4e3a5a3..1b63635 100644 --- a/gcc/tree-ssa-coalesce.c +++ b/gcc/tree-ssa-coalesce.c @@ -589,6 +589,24 @@ ssa_conflicts_merge (ssa_conflicts_p ptr, unsigned x, unsigned y) } +/* Dump a conflicts graph. */ + +static void +ssa_conflicts_dump (FILE *file, ssa_conflicts_p ptr) +{ + unsigned x; + + fprintf (file, "\nConflict graph:\n"); + + for (x = 0; x < ptr->size; x++) + if (ptr->conflicts[x]) + { + fprintf (dump_file, "%d: ", x); + dump_bitmap (file, ptr->conflicts[x]); + } +} + + /* This structure is used to efficiently record the current status of live SSA_NAMES when building a conflict graph. LIVE_BASE_VAR has a bit set for each base variable which has at least one @@ -1302,6 +1320,8 @@ coalesce_ssa_name (void) /* Build a conflict graph. */ graph = build_ssa_conflict_graph (liveinfo); delete_tree_live_info (liveinfo); + if (dump_file && (dump_flags & TDF_DETAILS)) + ssa_conflicts_dump (dump_file, graph); sort_coalesce_list (cl); |