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
{
/* 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);
......
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