diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-12-09 15:13:07 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-12-09 15:13:07 +0000 |
commit | 7f8b870dfe231cccdeaa65d5a6dd46b8cc816ed6 (patch) | |
tree | 463703e3c7e180ad116654082296677f1d21149c | |
parent | ce34c582b8f279fb3e8088029cdb5d7cbc51b57e (diff) | |
download | ppe42-gcc-7f8b870dfe231cccdeaa65d5a6dd46b8cc816ed6.tar.gz ppe42-gcc-7f8b870dfe231cccdeaa65d5a6dd46b8cc816ed6.zip |
2013-12-09 Richard Biener <rguenther@suse.de>
PR middle-end/38474
* tree-ssa-structalias.c (set_union_with_increment): Remove
unreachable code.
(do_complex_constraint): Call set_union_with_increment with
the solution delta, not the full solution.
(make_transitive_closure_constraints): Merge the two
constraints.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@205808 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/tree-ssa-structalias.c | 20 |
2 files changed, 13 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ba39e4b0d36..715b3a279e9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2013-12-09 Richard Biener <rguenther@suse.de> + + PR middle-end/38474 + * tree-ssa-structalias.c (set_union_with_increment): Remove + unreachable code. + (do_complex_constraint): Call set_union_with_increment with + the solution delta, not the full solution. + (make_transitive_closure_constraints): Merge the two + constraints. + 2013-12-09 Richard Earnshaw <rearnsha@arm.com> * arm.c (mem_ok_for_ldrd_strd): Rename first argument as MEM. Do diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index f2199092026..26ee85a385e 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -962,10 +962,6 @@ set_union_with_increment (bitmap to, bitmap from, HOST_WIDE_INT inc) if (bitmap_bit_p (from, anything_id)) return bitmap_set_bit (to, anything_id); - /* For zero offset simply union the solution into the destination. */ - if (inc == 0) - return bitmap_ior_into (to, from); - /* If the offset is unknown we have to expand the solution to all subfields. */ if (inc == UNKNOWN_OFFSET) @@ -1788,14 +1784,13 @@ do_complex_constraint (constraint_graph_t graph, constraint_t c, bitmap delta) else { bitmap tmp; - bitmap solution; bool flag = false; - gcc_checking_assert (c->rhs.type == SCALAR && c->lhs.type == SCALAR); - solution = get_varinfo (c->rhs.var)->solution; + gcc_checking_assert (c->rhs.type == SCALAR && c->lhs.type == SCALAR + && c->rhs.offset != 0 && c->lhs.offset == 0); tmp = get_varinfo (c->lhs.var)->solution; - flag = set_union_with_increment (tmp, solution, c->rhs.offset); + flag = set_union_with_increment (tmp, delta, c->rhs.offset); if (flag) bitmap_set_bit (changed, c->lhs.var); @@ -3712,15 +3707,6 @@ make_transitive_closure_constraints (varinfo_t vi) lhs.offset = 0; rhs.type = DEREF; rhs.var = vi->id; - rhs.offset = 0; - process_constraint (new_constraint (lhs, rhs)); - - /* VAR = VAR + UNKNOWN; */ - lhs.type = SCALAR; - lhs.var = vi->id; - lhs.offset = 0; - rhs.type = SCALAR; - rhs.var = vi->id; rhs.offset = UNKNOWN_OFFSET; process_constraint (new_constraint (lhs, rhs)); } |