diff options
author | Richard Henderson <rth@redhat.com> | 2002-07-25 10:33:43 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2002-07-25 10:33:43 -0700 |
commit | 40cb04f19b3d49770cd90927700c493adaff58b8 (patch) | |
tree | 8933d1c00a302e5243ebedb2a786906439d5decd | |
parent | 1899ba3ed2f8f79ce8ecef2b512425aaec669d61 (diff) | |
download | gcc-40cb04f19b3d49770cd90927700c493adaff58b8.zip gcc-40cb04f19b3d49770cd90927700c493adaff58b8.tar.gz gcc-40cb04f19b3d49770cd90927700c493adaff58b8.tar.bz2 |
emit-rtl.c (set_mem_attributes): Fix size and alignment thinkos in ARRAY_REF of DECL_P case.
* emit-rtl.c (set_mem_attributes): Fix size and alignment thinkos
in ARRAY_REF of DECL_P case.
From-SVN: r55752
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/emit-rtl.c | 14 |
2 files changed, 14 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ad40abd..ef6b358 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-07-25 Richard Henderson <rth@redhat.com> + + * emit-rtl.c (set_mem_attributes): Fix size and alignment thinkos + in ARRAY_REF of DECL_P case. + 2002-07-25 Richard Sandiford <rsandifo@redhat.com> * doc/invoke.texi: Document -mabi=meabi, and expand on the EABI diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index ab73f00..67c4cfb 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -1808,12 +1808,16 @@ set_mem_attributes (ref, t, objectp) if (DECL_P (t)) { expr = t; + offset = NULL; if (host_integerp (off_tree, 1)) - offset = GEN_INT (tree_low_cst (off_tree, 1)); - size = (DECL_SIZE_UNIT (t) - && host_integerp (DECL_SIZE_UNIT (t), 1) - ? GEN_INT (tree_low_cst (DECL_SIZE_UNIT (t), 1)) : 0); - align = DECL_ALIGN (t); + { + HOST_WIDE_INT ioff = tree_low_cst (off_tree, 1); + HOST_WIDE_INT aoff = (ioff & -ioff) * BITS_PER_UNIT; + align = DECL_ALIGN (t); + if (aoff && aoff < align) + align = aoff; + offset = GEN_INT (ioff); + } } else if (TREE_CODE (t) == COMPONENT_REF) { |