diff options
author | Martin Jambor <mjambor@suse.cz> | 2017-06-13 13:34:51 +0200 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2017-06-13 13:34:51 +0200 |
commit | 35a952ba70028b50fbd2fd19f7dc91f2da45371e (patch) | |
tree | 35eb66b90e2c173c1b89df32c2459105ec4c6ef6 | |
parent | 7aa923e02f598c1075f3acf1e5da946848515b36 (diff) | |
download | gcc-35a952ba70028b50fbd2fd19f7dc91f2da45371e.tar.gz |
[PR80803 1/2] Streamline SRA access enqueuing
2017-06-13 Martin Jambor <mjambor@suse.cz>
* tree-sra.c (add_access_to_work_queue): Only enqueue accesses
that have a first_link.
(sort_and_splice_var_accesses): Do not check first_link before
enquing.
(subtree_mark_written_and_enqueue): Likewise.
(propagate_all_subaccesses): Likewise and do not stop at first
parent with a first_link.
From-SVN: r249153
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/tree-sra.c | 14 |
2 files changed, 14 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0f4f469a26c..4dec155ad86 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,15 @@ 2017-06-13 Martin Jambor <mjambor@suse.cz> + * tree-sra.c (add_access_to_work_queue): Only enqueue accesses + that have a first_link. + (sort_and_splice_var_accesses): Do not check first_link before + enquing. + (subtree_mark_written_and_enqueue): Likewise. + (propagate_all_subaccesses): Likewise and do not stop at first + parent with a first_link. + +2017-06-13 Martin Jambor <mjambor@suse.cz> + * tree-sra.c (dump_access_tree_1): Fix accidental dumping to stderr instead of f. diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 42879adbad1..05bc3d0e806 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -627,7 +627,7 @@ relink_to_new_repr (struct access *new_racc, struct access *old_racc) static void add_access_to_work_queue (struct access *access) { - if (!access->grp_queued) + if (access->first_link && !access->grp_queued) { gcc_assert (!access->next_queued); access->next_queued = work_queue_head; @@ -2112,8 +2112,7 @@ sort_and_splice_var_accesses (tree var) access->grp_total_scalarization = total_scalarization; access->grp_partial_lhs = grp_partial_lhs; access->grp_unscalarizable_region = unscalarizable_region; - if (access->first_link) - add_access_to_work_queue (access); + add_access_to_work_queue (access); *prev_acc_ptr = access; prev_acc_ptr = &access->next_grp; @@ -2670,8 +2669,7 @@ subtree_mark_written_and_enqueue (struct access *access) if (access->grp_write) return; access->grp_write = true; - if (access->first_link) - add_access_to_work_queue (access); + add_access_to_work_queue (access); struct access *child; for (child = access->first_child; child; child = child->next_sibling) @@ -2715,11 +2713,7 @@ propagate_all_subaccesses (void) if (reque_parents) do { - if (lacc->first_link) - { - add_access_to_work_queue (lacc); - break; - } + add_access_to_work_queue (lacc); lacc = lacc->parent; } while (lacc); |