summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/stor-layout.c4
2 files changed, 5 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 64935f63fb6..e8684138e92 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
2004-12-18 Richard Henderson <rth@redhat.com>
+ * stor-layout.c (layout_decl): Unshare size expressions copied
+ from the type.
+
* fold-const.c (multiple_of_p): Handle BIT_AND_EXPR when
BOTTOM is a power of two.
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
index ac7fb744f66..b2f73f000d0 100644
--- a/gcc/stor-layout.c
+++ b/gcc/stor-layout.c
@@ -325,8 +325,8 @@ layout_decl (tree decl, unsigned int known_align)
if (DECL_SIZE (decl) == 0)
{
- DECL_SIZE (decl) = TYPE_SIZE (type);
- DECL_SIZE_UNIT (decl) = TYPE_SIZE_UNIT (type);
+ DECL_SIZE (decl) = unsave_expr (TYPE_SIZE (type));
+ DECL_SIZE_UNIT (decl) = unsave_expr (TYPE_SIZE_UNIT (type));
}
else if (DECL_SIZE_UNIT (decl) == 0)
DECL_SIZE_UNIT (decl)