diff options
author | Martin Jambor <mjambor@suse.cz> | 2013-01-08 14:10:44 +0000 |
---|---|---|
committer | Martin Jambor <mjambor@suse.cz> | 2013-01-08 14:10:44 +0000 |
commit | c3ca808163624ddcdd2707bd297df38eecb06d3d (patch) | |
tree | bf20a1a93aced6f048f916251195f06361aa0722 /gcc/tree-sra.c | |
parent | 024624ff12502bf5432a18b0c15b2233672ebf32 (diff) |
2013-01-08 Martin Jambor <mjambor@suse.cz>
PR debug/55579
* tree-sra.c (analyze_access_subtree): Return true also after
potentially creating a debug-only replacement.
testsuite/
* gcc.dg/tree-ssa/pr55579.c: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@195015 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-sra.c')
-rw-r--r-- | gcc/tree-sra.c | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 9c75393afae..af5a36e57ef 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -2197,20 +2197,25 @@ analyze_access_subtree (struct access *root, struct access *parent, } else { - if (MAY_HAVE_DEBUG_STMTS && allow_replacements + if (allow_replacements && scalar && !root->first_child && (root->grp_scalar_write || root->grp_assignment_write)) { gcc_checking_assert (!root->grp_scalar_read && !root->grp_assignment_read); - root->grp_to_be_debug_replaced = 1; - if (dump_file && (dump_flags & TDF_DETAILS)) + sth_created = true; + if (MAY_HAVE_DEBUG_STMTS) { - fprintf (dump_file, "Marking "); - print_generic_expr (dump_file, root->base, 0); - fprintf (dump_file, " offset: %u, size: %u ", - (unsigned) root->offset, (unsigned) root->size); - fprintf (dump_file, " to be replaced with debug statements.\n"); + root->grp_to_be_debug_replaced = 1; + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, "Marking "); + print_generic_expr (dump_file, root->base, 0); + fprintf (dump_file, " offset: %u, size: %u ", + (unsigned) root->offset, (unsigned) root->size); + fprintf (dump_file, " to be replaced with debug " + "statements.\n"); + } } } @@ -2220,17 +2225,11 @@ analyze_access_subtree (struct access *root, struct access *parent, root->grp_total_scalarization = 0; } - if (sth_created - && (!hole || root->grp_total_scalarization)) - { - root->grp_covered = 1; - return true; - } - if (root->grp_write || TREE_CODE (root->base) == PARM_DECL) + if (!hole || root->grp_total_scalarization) + root->grp_covered = 1; + else if (root->grp_write || TREE_CODE (root->base) == PARM_DECL) root->grp_unscalarized_data = 1; /* not covered and written to */ - if (sth_created) - return true; - return false; + return sth_created; } /* Analyze all access trees linked by next_grp by the means of |