re PR tree-optimization/36400 (points-to results wrong)
authorRichard Biener <rguenth@gcc.gnu.org>
Fri, 27 Jun 2008 21:54:42 +0000 (21:54 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 27 Jun 2008 21:54:42 +0000 (21:54 +0000)
commite3fd526b6a0b085e805523eb53c64ebc2099c4e3
treebb4518f44507bd5a28b8f4f4627a278c6fa3dfdf
parent7059ea888d4003f899c269cb0759f2f52fe37367
re PR tree-optimization/36400 (points-to results wrong)

2008-06-27  Richard Guenther  <rguenther@suse.de>

PR tree-optimization/36400
PR tree-optimization/36373
PR tree-optimization/36344
* tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
var_nonlocal, nonlocal_tree, nonlocal_id): New globals
(update_alias_info): Remove call clobbering code.
(make_constraint_to): New helper function.
(make_escape_constraint): Likewise.
(handle_rhs_call): Use it on all pointer containing arguments.
Also mark the static chain escaped.
(handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
instead of ANYTHING.
(make_constraint_from): New helper split out from ...
(make_constraint_from_anything): ... here.
(find_func_aliases): Add constraints for escape sites.
(intra_create_variable_infos): Make constraints from NONLOCAL
for parameters.
(find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
as ANYTHING.
(clobber_what_p_points_to): Remove.
(clobber_what_escaped): New function.
(init_base_vars): Init NONLOCAL and ESCAPED.
(do_sd_constraint): Do not propagate the solution from ESCAPED
but use ESCAPED as a placeholder.
(solve_graph): Likewise.
* tree-flow.h (clobber_what_p_points_to): Remove.
(clobber_what_escaped): Declare.
* tree-ssa-alias.c (set_initial_properties): Call it.
Remove code clobbering escaped pointers.

* gcc.dg/torture/pr36373-1.c: New testcase.
* gcc.dg/torture/pr36373-2.c: Likewise.
* gcc.dg/torture/pr36373-3.c: Likewise.
* gcc.dg/torture/pr36373-4.c: Likewise.
* gcc.dg/torture/pr36373-5.c: Likewise.
* gcc.dg/torture/pr36373-6.c: Likewise.
* gcc.dg/torture/pr36373-7.c: Likewise.
* gcc.dg/torture/pr36373-8.c: Likewise.
* gcc.dg/torture/pr36373-9.c: Likewise.
* gcc.dg/torture/pr36373-10.c: Likewise.
* gcc.dg/torture/pr36400.c: Likewise.
* gcc.c-torture/execute/pta-field-1.c: Likewise.
* gcc.c-torture/execute/pta-field-2.c: Likewise.
* gcc.dg/tree-ssa/loadpre8.c: Remove XFAIL.
* gcc.dg/tree-ssa/pr24287.c: XFAIL.

From-SVN: r137204
13 files changed:
gcc/testsuite/gcc.c-torture/execute/pta-field-1.c [new file with mode: 0644]
gcc/testsuite/gcc.c-torture/execute/pta-field-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr36373-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr36373-10.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr36373-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr36373-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr36373-4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr36373-5.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr36373-6.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr36373-7.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr36373-8.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr36373-9.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr36400.c [new file with mode: 0644]