summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-structalias.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2006-01-10 14:55:59 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2006-01-10 14:55:59 +0000
commit1ea4e130bb813dec402860dfc9e22d2377a3fab8 (patch)
treea59ae301392868057eb7ebcb20df8d31de9e6a2d /gcc/tree-ssa-structalias.c
parentd37679e3b92a451df5912df7ec5a57985512e7dd (diff)
downloadgcc-1ea4e130bb813dec402860dfc9e22d2377a3fab8.tar.gz
2006-01-10 Richard Guenther <rguenther@suse.de>
* tree-ssa-structalias.c (get_constraint_for_component_ref): Never override with anything constraint. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109544 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-structalias.c')
-rw-r--r--gcc/tree-ssa-structalias.c17
1 files changed, 3 insertions, 14 deletions
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index 63ba8d4deb8..e7b47fc31b2 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -2373,25 +2373,14 @@ get_constraint_for_component_ref (tree t, VEC(ce_s, heap) **results)
t = get_ref_base_and_extent (t, &bitpos, &bitsize, &bitmaxsize);
get_constraint_for (t, results);
result = VEC_last (ce_s, *results);
+ result->offset = bitpos;
gcc_assert (beforelength + 1 == VEC_length (ce_s, *results));
/* This can also happen due to weird offsetof type macros. */
if (TREE_CODE (t) != ADDR_EXPR && result->type == ADDRESSOF)
result->type = SCALAR;
-
- /* If we know where this goes, then yay. Otherwise, booo. */
- if (bitmaxsize != -1
- && bitsize == bitmaxsize)
- {
- result->offset = bitpos;
- }
- else
- {
- result->var = anything_id;
- result->offset = 0;
- }
-
+
if (result->type == SCALAR)
{
/* In languages like C, you can access one past the end of an
@@ -2409,7 +2398,7 @@ get_constraint_for_component_ref (tree t, VEC(ce_s, heap) **results)
for (curr = get_varinfo (result->var); curr; curr = curr->next)
{
if (offset_overlaps_with_access (curr->offset, curr->size,
- result->offset, bitsize))
+ result->offset, bitmaxsize))
{
result->var = curr->id;
break;