Commit 79108894 authored by Paul Eggert's avatar Paul Eggert

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.
parent d1495609
...@@ -2922,19 +2922,16 @@ set_next_vector (struct Lisp_Vector *v, struct Lisp_Vector *p) ...@@ -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
{ can contain any C type, align at least as strictly as
/* Alignment of struct Lisp_Vector objects. Because pseudovectors max_align_t. On x86 and x86-64 this can waste up to 8 bytes
can contain any C type, align at least as strictly as for typical vectors, since alignof (max_align_t) is 16 but
max_align_t. On x86 and x86-64 this can waste up to 8 bytes typical vectors need only an alignment of 8. However, it is
for typical vectors, since alignof (max_align_t) is 16 but not worth the hassle to avoid wasting those bytes. */
typical vectors need only an alignment of 8. However, it is enum {vector_alignment = COMMON_MULTIPLE (alignof (max_align_t), GCALIGNMENT)};
not worth the hassle to avoid wasting those bytes. */
vector_alignment = COMMON_MULTIPLE (alignof (max_align_t), GCALIGNMENT), /* Vector size requests are a multiple of this. */
enum { roundup_size = COMMON_MULTIPLE (vector_alignment, word_size) };
/* Vector size requests are a multiple of this. */
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);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment