diff options
author | Richard Biener <rguenther@suse.de> | 2013-11-15 14:48:22 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-11-15 14:48:22 +0000 |
commit | 11924f8b487dc3feb882f08b195bbcbfbacfd96d (patch) | |
tree | 14c2118dc537f4635438cc32c9d55e790d891b3b /gcc/gimple-pretty-print.c | |
parent | e179190c0366ca882d4f7bcc33ea42d1cdcfed22 (diff) | |
download | gcc-11924f8b487dc3feb882f08b195bbcbfbacfd96d.zip gcc-11924f8b487dc3feb882f08b195bbcbfbacfd96d.tar.gz gcc-11924f8b487dc3feb882f08b195bbcbfbacfd96d.tar.bz2 |
re PR middle-end/50262 (PTA doesn't disambiguate locally allocated heap objects from pointed to by arguments)
2013-11-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/50262
* tree-ssa-alias.h (struct pt_solution): Split
vars_contains_global into vars_contains_nonlocal,
vars_contains_escaped and vars_contains_escaped_heap.
* tree-ssa-structalias.c (label_visit): Expand comment.
(handle_lhs_call): Adjust comment.
(set_uids_in_ptset): Set the new flags appropriately.
(pt_solution_set): Adjust.
(pt_solution_set_var): Likewise.
(pt_solution_ior_into): Likewise.
(pt_solution_includes_global): Likewise.
(pt_solutions_intersect_1): Optimize escaped handling.
(compute_points_to_sets): Remove heap variable globalization.
(ipa_escaped_pt): Adjust initializer.
(pass_data_ipa_pta): Do not run TODO_update_ssa.
* gimple-pretty-print.c (pp_points_to_solution): Print split
flags.
* tree-ssa-alias.c (dump_points_to_solution): Likewise.
* gcc.dg/tree-ssa/alias-28.c: New testcase.
* gcc.dg/strlenopt-1.c: Adjust.
* gcc.dg/strlenopt-1f.c: Likewise.
From-SVN: r204845
Diffstat (limited to 'gcc/gimple-pretty-print.c')
-rw-r--r-- | gcc/gimple-pretty-print.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/gcc/gimple-pretty-print.c b/gcc/gimple-pretty-print.c index 86c2a55..26d59d1 100644 --- a/gcc/gimple-pretty-print.c +++ b/gcc/gimple-pretty-print.c @@ -622,8 +622,18 @@ pp_points_to_solution (pretty_printer *buffer, struct pt_solution *pt) pp_space (buffer); } pp_right_brace (buffer); - if (pt->vars_contains_global) - pp_string (buffer, " (glob)"); + if (pt->vars_contains_nonlocal + && pt->vars_contains_escaped_heap) + pp_string (buffer, " (nonlocal, escaped heap)"); + else if (pt->vars_contains_nonlocal + && pt->vars_contains_escaped) + pp_string (buffer, " (nonlocal, escaped)"); + else if (pt->vars_contains_nonlocal) + pp_string (buffer, " (nonlocal)"); + else if (pt->vars_contains_escaped_heap) + pp_string (buffer, " (escaped heap)"); + else if (pt->vars_contains_escaped) + pp_string (buffer, " (escaped)"); } } |