From cac16ef9dadc3db4529dbcc204d13101f3e131b4 Mon Sep 17 00:00:00 2001
From: Richard Henderson <rth@redhat.com>
Date: Tue, 21 Nov 2000 17:52:14 -0800
Subject: [PATCH] varasm.c (record_constant): Pad the constructed
 constant_descriptor appropriately.

        * varasm.c (record_constant): Pad the constructed
        constant_descriptor appropriately.

From-SVN: r37638
---
 gcc/ChangeLog | 5 +++++
 gcc/varasm.c  | 9 +++++++++
 2 files changed, 14 insertions(+)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a60a7e9ae70a..215f3c85b26c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-11-21  Richard Henderson  <rth@redhat.com>
+
+	* varasm.c (record_constant): Pad the constructed
+	constant_descriptor appropriately.
+
 Wed Nov 22 00:52:55 2000  J"orn Rennecke <amylaar@redhat.com>
 
 	* rtl.h (traverse_md_constants): Declare.
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 799beeb14ee1..e9925bfd6bf3 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -2797,6 +2797,7 @@ record_constant (exp)
   struct constant_descriptor *next = 0;
   char *label = 0;
   rtx rtl = 0;
+  int pad;
 
   /* Make a struct constant_descriptor.  The first three pointers will
      be filled in later.  Here we just leave space for them.  */
@@ -2804,6 +2805,14 @@ record_constant (exp)
   obstack_grow (&permanent_obstack, (char *) &next, sizeof next);
   obstack_grow (&permanent_obstack, (char *) &label, sizeof label);
   obstack_grow (&permanent_obstack, (char *) &rtl, sizeof rtl);
+
+  /* Align the descriptor for the data payload.  */
+  pad = (offsetof (struct constant_descriptor, u)
+	 - offsetof(struct constant_descriptor, rtl)
+	 - sizeof(next->rtl));
+  if (pad > 0)
+    obstack_blank (&permanent_obstack, pad);
+
   record_constant_1 (exp);
   return (struct constant_descriptor *) obstack_finish (&permanent_obstack);
 }
-- 
GitLab