summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2017-06-13 13:34:51 +0200
committerMartin Jambor <jamborm@gcc.gnu.org>2017-06-13 13:34:51 +0200
commit35a952ba70028b50fbd2fd19f7dc91f2da45371e (patch)
tree35eb66b90e2c173c1b89df32c2459105ec4c6ef6
parent7aa923e02f598c1075f3acf1e5da946848515b36 (diff)
downloadgcc-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/ChangeLog10
-rw-r--r--gcc/tree-sra.c14
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);