Preserve SSA info for more propagated copy
Besides VN and copy-prop also CCP and VRP as well as forwprop propagate out copies and thus it's worthwhile to try to preserve range and points-to info there when possible. Note that this also fixes the testcase from PR115701 but that's because we do not actually intersect info but only copy info when there was no info present. * tree-ssa-forwprop.cc (fwprop_set_lattice_val): Preserve SSA info. * tree-ssa-propagate.cc (substitute_and_fold_dom_walker::before_dom_children): Likewise.
This commit is contained in:
parent
7a65ab6b5f
commit
4d24159a1f
2 changed files with 12 additions and 0 deletions
|
@ -207,6 +207,10 @@ fwprop_set_lattice_val (tree name, tree val)
|
|||
lattice.quick_grow_cleared (num_ssa_names);
|
||||
}
|
||||
lattice[SSA_NAME_VERSION (name)] = val;
|
||||
/* As this now constitutes a copy duplicate points-to
|
||||
and range info appropriately. */
|
||||
if (TREE_CODE (val) == SSA_NAME)
|
||||
maybe_duplicate_ssa_info_at_copy (name, val);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -789,6 +789,10 @@ substitute_and_fold_dom_walker::before_dom_children (basic_block bb)
|
|||
fprintf (dump_file, "\n");
|
||||
}
|
||||
bitmap_set_bit (dceworklist, SSA_NAME_VERSION (res));
|
||||
/* As this now constitutes a copy duplicate points-to
|
||||
and range info appropriately. */
|
||||
if (TREE_CODE (sprime) == SSA_NAME)
|
||||
maybe_duplicate_ssa_info_at_copy (res, sprime);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
@ -831,6 +835,10 @@ substitute_and_fold_dom_walker::before_dom_children (basic_block bb)
|
|||
fprintf (dump_file, "\n");
|
||||
}
|
||||
bitmap_set_bit (dceworklist, SSA_NAME_VERSION (lhs));
|
||||
/* As this now constitutes a copy duplicate points-to
|
||||
and range info appropriately. */
|
||||
if (TREE_CODE (sprime) == SSA_NAME)
|
||||
maybe_duplicate_ssa_info_at_copy (lhs, sprime);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue