]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/tree-ssa-structalias.c
re PR tree-optimization/22548 (Aliasing can not tell array members apart)
authorRichard Guenther <rguenther@suse.de>
Sat, 14 Jan 2006 14:30:33 +0000 (14:30 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Sat, 14 Jan 2006 14:30:33 +0000 (14:30 +0000)
commita916f21d3c176a23f54114a17605813a31cd5d2e
tree97912e34de2d72cef706a4b2d7ff6e7a163b3439
parent7f17528ab58fa0a0f627b94bacbae686438b9bd4
re PR tree-optimization/22548 (Aliasing can not tell array members apart)

2006-01-14  Richard Guenther  <rguenther@suse.de>

PR tree-optimization/22548
PR tree-optimization/22555
PR tree-optimization/22501
* Makefile.in (tree-ssa-structalias.o): Depend on $(PARAMS_H).
* params.def (salias-max-array-elements): New parameter.
* params.h (SALIAS_MAX_ARRAY_ELEMENTS): Define.
* doc/invoke.texi (salias-max-array-elements): Document.
* tree-flow-inline.h (var_can_have_subvars): We also handle
arrays now.
* tree-ssa-alias.c (find_used_portions): Handle ARRAY_REF like
COMPONENT_REF.
* tree-ssa-structalias.c (params.h): Include.
(push_fields_onto_fieldstack): Handle ARRAY_TYPE.
(find_func_aliases): Handle multiple constraints from ARRAY_REF.
(get_constraint_for): For ADDR_EXPR operating on something
containing an ARRAY_REF, add all subvars to the solution.
(handle_ptr_arith): Handle ARRAY_TYPE like RECORD_TYPE types.
* tree-ssa-operands.c (parse_ssa_operands): Handle ARRAY_REF
for creating MUST_DEFs.
(get_expr_operands): Treat ARRAY_REF like COMPONENT_REF wrt subvars.

* gcc.dg/tree-ssa/alias-4.c: New testcase.
* gcc.dg/tree-ssa/alias-5.c: Likewise.
* gcc.dg/tree-ssa/alias-6.c: Likewise.
* gcc.dg/tree-ssa/alias-7.c: Likewise.
* gcc.dg/tree-ssa/alias-8.c: Likewise.
* gcc.dg/tree-ssa/alias-9.c: Likewise.
* gcc.dg/tree-ssa/alias-10.c: Likewise.
* gcc.dg/tree-ssa/alias-11.c: Likewise.
* gcc.dg/tree-ssa/alias-12.c: Likewise.

From-SVN: r109703
19 files changed:
gcc/ChangeLog
gcc/Makefile.in
gcc/doc/invoke.texi
gcc/params.def
gcc/params.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/alias-10.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/alias-11.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/alias-12.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/alias-4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/alias-5.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/alias-6.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/alias-7.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/alias-8.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/alias-9.c [new file with mode: 0644]
gcc/tree-flow-inline.h
gcc/tree-ssa-alias.c
gcc/tree-ssa-operands.c
gcc/tree-ssa-structalias.c