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

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

From-SVN: r37638
This commit is contained in:
Richard Henderson 2000-11-21 17:52:14 -08:00 committed by Richard Henderson
parent 033b8a0cdb
commit cac16ef9da
2 changed files with 14 additions and 0 deletions

View File

@ -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.

View File

@ -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);
}