diff options
author | Martin Jambor <mjambor@suse.cz> | 2011-06-08 14:16:15 +0200 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2011-06-08 14:16:15 +0200 |
commit | d9c77712d5b14e131210303ffbef49096ae613d1 (patch) | |
tree | f181c999f87d687e218d4cff08ad1561226b7504 | |
parent | 545dc5e3245fe4abf8c738424d293988e8c67b8c (diff) | |
download | gcc-d9c77712d5b14e131210303ffbef49096ae613d1.zip gcc-d9c77712d5b14e131210303ffbef49096ae613d1.tar.gz gcc-d9c77712d5b14e131210303ffbef49096ae613d1.tar.bz2 |
tree-sra.c (mark_rw_status): Removed.
2011-06-08 Martin Jambor <mjambor@suse.cz>
* tree-sra.c (mark_rw_status): Removed.
(analyze_access_subtree): New parameter parent instead of
mark_read and mark_write, propagate from that.
From-SVN: r174806
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-sra.c | 45 |
2 files changed, 20 insertions, 31 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7ee6821..024f6b6b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-06-08 Martin Jambor <mjambor@suse.cz> + + * tree-sra.c (mark_rw_status): Removed. + (analyze_access_subtree): New parameter parent instead of + mark_read and mark_write, propagate from that. + 2011-06-08 Julian Brown <julian@codesourcery.com> * config/arm/arm.c (arm_libcall_uses_aapcs_base): Use correct ABI diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 3183b93..47d4471 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -1864,8 +1864,6 @@ expr_with_var_bounded_array_refs_p (tree expr) return false; } -enum mark_rw_status { SRA_MRRW_NOTHING, SRA_MRRW_DIRECT, SRA_MRRW_ASSIGN}; - /* Analyze the subtree of accesses rooted in ROOT, scheduling replacements when both seeming beneficial and when ALLOW_REPLACEMENTS allows it. Also set all sorts of access flags appropriately along the way, notably always set @@ -1905,9 +1903,8 @@ enum mark_rw_status { SRA_MRRW_NOTHING, SRA_MRRW_DIRECT, SRA_MRRW_ASSIGN}; 1 1 1 1 Yes Any of the above yeses */ static bool -analyze_access_subtree (struct access *root, bool allow_replacements, - enum mark_rw_status mark_read, - enum mark_rw_status mark_write) +analyze_access_subtree (struct access *root, struct access *parent, + bool allow_replacements) { struct access *child; HOST_WIDE_INT limit = root->offset + root->size; @@ -1915,29 +1912,17 @@ analyze_access_subtree (struct access *root, bool allow_replacements, bool scalar = is_gimple_reg_type (root->type); bool hole = false, sth_created = false; - if (root->grp_assignment_read) - mark_read = SRA_MRRW_ASSIGN; - else if (mark_read == SRA_MRRW_ASSIGN) - { - root->grp_read = 1; - root->grp_assignment_read = 1; - } - else if (mark_read == SRA_MRRW_DIRECT) - root->grp_read = 1; - else if (root->grp_read) - mark_read = SRA_MRRW_DIRECT; - - if (root->grp_assignment_write) - mark_write = SRA_MRRW_ASSIGN; - else if (mark_write == SRA_MRRW_ASSIGN) + if (parent) { - root->grp_write = 1; - root->grp_assignment_write = 1; + if (parent->grp_read) + root->grp_read = 1; + if (parent->grp_assignment_read) + root->grp_assignment_read = 1; + if (parent->grp_write) + root->grp_write = 1; + if (parent->grp_assignment_write) + root->grp_assignment_write = 1; } - else if (mark_write == SRA_MRRW_DIRECT) - root->grp_write = 1; - else if (root->grp_write) - mark_write = SRA_MRRW_DIRECT; if (root->grp_unscalarizable_region) allow_replacements = false; @@ -1952,9 +1937,8 @@ analyze_access_subtree (struct access *root, bool allow_replacements, else covered_to += child->size; - sth_created |= analyze_access_subtree (child, - allow_replacements && !scalar, - mark_read, mark_write); + sth_created |= analyze_access_subtree (child, root, + allow_replacements && !scalar); root->grp_unscalarized_data |= child->grp_unscalarized_data; hole |= !child->grp_covered; @@ -2002,8 +1986,7 @@ analyze_access_trees (struct access *access) while (access) { - if (analyze_access_subtree (access, true, - SRA_MRRW_NOTHING, SRA_MRRW_NOTHING)) + if (analyze_access_subtree (access, NULL, true)) ret = true; access = access->next_grp; } |