diff options
author | pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-05-31 16:29:16 +0000 |
---|---|---|
committer | pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-05-31 16:29:16 +0000 |
commit | 23dc933913907878bd5fee64389173b8f45771cd (patch) | |
tree | ed37254f074675713e8513c7affc7c3581455948 /gcc/tree-ssa-copy.c | |
parent | 518308d556e5b0c5c964bec09913bf0bf6a15865 (diff) | |
download | gcc-23dc933913907878bd5fee64389173b8f45771cd.tar.gz |
2005-05-31 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/21732
* tree-ssa-copy.c (dump_copy_of): Create a bitmap and don't visit a
SSA_NAME twice and cause the loop to become finite. Remove the test
for val.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100396 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-copy.c')
-rw-r--r-- | gcc/tree-ssa-copy.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/tree-ssa-copy.c b/gcc/tree-ssa-copy.c index 5f4033d3a9b..8e2b53686a7 100644 --- a/gcc/tree-ssa-copy.c +++ b/gcc/tree-ssa-copy.c @@ -475,24 +475,30 @@ static void dump_copy_of (FILE *dump_file, tree var) { tree val; + sbitmap visited; print_generic_expr (dump_file, var, dump_flags); if (TREE_CODE (var) != SSA_NAME) return; - + + visited = sbitmap_alloc (num_ssa_names); + SET_BIT (visited, SSA_NAME_VERSION (var)); + fprintf (dump_file, " copy-of chain: "); val = var; print_generic_expr (dump_file, val, 0); fprintf (dump_file, " "); - while (copy_of[SSA_NAME_VERSION (val)].value - && copy_of[SSA_NAME_VERSION (val)].value != val) + while (copy_of[SSA_NAME_VERSION (val)].value) { fprintf (dump_file, "-> "); val = copy_of[SSA_NAME_VERSION (val)].value; print_generic_expr (dump_file, val, 0); fprintf (dump_file, " "); + if (TEST_BIT (visited, SSA_NAME_VERSION (val))) + break; + SET_BIT (visited, SSA_NAME_VERSION (val)); } val = get_copy_of_val (var)->value; @@ -502,6 +508,8 @@ dump_copy_of (FILE *dump_file, tree var) fprintf (dump_file, "[COPY]"); else fprintf (dump_file, "[NOT A COPY]"); + + sbitmap_free (visited); } |