From 79108894dbcd642121466bb6af6c98c6a56e9233 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 13 Nov 2017 10:06:50 -0800 Subject: [PATCH] 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. --- src/alloc.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/alloc.c b/src/alloc.c index 3b87195b707..88e24cfb736 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -2922,19 +2922,16 @@ set_next_vector (struct Lisp_Vector *v, struct Lisp_Vector *p) #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 - 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 - typical vectors need only an alignment of 8. However, it is - 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. */ - roundup_size = COMMON_MULTIPLE (vector_alignment, word_size) - }; +/* Alignment of struct Lisp_Vector objects. Because pseudovectors + 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 + for typical vectors, since alignof (max_align_t) is 16 but + typical vectors need only an alignment of 8. However, it is + not worth the hassle to avoid wasting those bytes. */ +enum {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) }; /* Verify assumptions described above. */ verify (VECTOR_BLOCK_SIZE % roundup_size == 0); -- 2.39.2