summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2013-12-09 15:13:07 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2013-12-09 15:13:07 +0000
commit7f8b870dfe231cccdeaa65d5a6dd46b8cc816ed6 (patch)
tree463703e3c7e180ad116654082296677f1d21149c
parentce34c582b8f279fb3e8088029cdb5d7cbc51b57e (diff)
downloadppe42-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/ChangeLog10
-rw-r--r--gcc/tree-ssa-structalias.c20
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));
}
OpenPOWER on IntegriCloud