+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
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;
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;
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)
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);