SRA: Also propagate accesses from LHS to RHS [PR92706]
authorMartin Jambor <mjambor@suse.cz>
Wed, 29 Jan 2020 12:13:13 +0000 (13:13 +0100)
committerMartin Jambor <mjambor@suse.cz>
Wed, 29 Jan 2020 12:13:13 +0000 (13:13 +0100)
commit6693911f069b1ada7c04aa1d00c3653ba694958a
tree4b68a2e96a8da5bc44a845347533f7ebf53655df
parent636e80eea24b780f1d5f4c14c58fc00001df8508
SRA: Also propagate accesses from LHS to RHS [PR92706]

2020-01-29  Martin Jambor  <mjambor@suse.cz>

PR tree-optimization/92706
* tree-sra.c (struct access): Fields first_link, last_link,
next_queued and grp_queued renamed to first_rhs_link, last_rhs_link,
next_rhs_queued and grp_rhs_queued respectively, new fields
first_lhs_link, last_lhs_link, next_lhs_queued and grp_lhs_queued.
(struct assign_link): Field next renamed to next_rhs, new field
next_lhs.  Updated comment.
(work_queue_head): Renamed to rhs_work_queue_head.
(lhs_work_queue_head): New variable.
(add_link_to_lhs): New function.
(relink_to_new_repr): Also relink LHS lists.
(add_access_to_work_queue): Renamed to add_access_to_rhs_work_queue.
(add_access_to_lhs_work_queue): New function.
(pop_access_from_work_queue): Renamed to
pop_access_from_rhs_work_queue.
(pop_access_from_lhs_work_queue): New function.
(build_accesses_from_assign): Also add links to LHS lists and to LHS
work_queue.
(child_would_conflict_in_lacc): Renamed to
child_would_conflict_in_acc.  Adjusted parameter names.
(create_artificial_child_access): New parameter set_grp_read, use it.
(subtree_mark_written_and_enqueue): Renamed to
subtree_mark_written_and_rhs_enqueue.
(propagate_subaccesses_across_link): Renamed to
propagate_subaccesses_from_rhs.
(propagate_subaccesses_from_lhs): New function.
(propagate_all_subaccesses): Also propagate subaccesses from LHSs to
RHSs.

testsuite/
* gcc.dg/tree-ssa/pr92706-1.c: New test.
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/pr92706-1.c [new file with mode: 0644]
gcc/tree-sra.c