Port to IBM xlc 12.01
Work around a compiler bug by using a separate enum for alignment. * src/alloc.c (roundup_size): Declare in a separate enum.
This commit is contained in:
parent
d14956099d
commit
79108894db
1 changed files with 9 additions and 12 deletions
|
@ -2922,19 +2922,16 @@ set_next_vector (struct Lisp_Vector *v, struct Lisp_Vector *p)
|
||||||
|
|
||||||
#define VECTOR_BLOCK_SIZE 4096
|
#define VECTOR_BLOCK_SIZE 4096
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
/* Alignment of struct Lisp_Vector objects. Because pseudovectors
|
/* Alignment of struct Lisp_Vector objects. Because pseudovectors
|
||||||
can contain any C type, align at least as strictly as
|
can contain any C type, align at least as strictly as
|
||||||
max_align_t. On x86 and x86-64 this can waste up to 8 bytes
|
max_align_t. On x86 and x86-64 this can waste up to 8 bytes
|
||||||
for typical vectors, since alignof (max_align_t) is 16 but
|
for typical vectors, since alignof (max_align_t) is 16 but
|
||||||
typical vectors need only an alignment of 8. However, it is
|
typical vectors need only an alignment of 8. However, it is
|
||||||
not worth the hassle to avoid wasting those bytes. */
|
not worth the hassle to avoid wasting those bytes. */
|
||||||
vector_alignment = COMMON_MULTIPLE (alignof (max_align_t), GCALIGNMENT),
|
enum {vector_alignment = COMMON_MULTIPLE (alignof (max_align_t), GCALIGNMENT)};
|
||||||
|
|
||||||
/* Vector size requests are a multiple of this. */
|
/* Vector size requests are a multiple of this. */
|
||||||
roundup_size = COMMON_MULTIPLE (vector_alignment, word_size)
|
enum { roundup_size = COMMON_MULTIPLE (vector_alignment, word_size) };
|
||||||
};
|
|
||||||
|
|
||||||
/* Verify assumptions described above. */
|
/* Verify assumptions described above. */
|
||||||
verify (VECTOR_BLOCK_SIZE % roundup_size == 0);
|
verify (VECTOR_BLOCK_SIZE % roundup_size == 0);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue