[PATCH 2/2] Use C11 _Alignas on scratch_buffer internal buffer
Florian Weimer
fweimer@redhat.com
Mon Sep 18 15:21:00 GMT 2017
On 09/18/2017 04:42 PM, Adhemerval Zanella wrote:
> Checked on x86_64-linux-gnu.
>
> * include/scratch_buffer.h (scratch_buffer): Use C11 _Alignas on
> __space field definition if compiler supports it.
> ---
> ChangeLog | 3 +++
> include/scratch_buffer.h | 5 +++++
> 2 files changed, 8 insertions(+)
>
> diff --git a/include/scratch_buffer.h b/include/scratch_buffer.h
> index bb04662..2e0c8b5 100644
> --- a/include/scratch_buffer.h
> +++ b/include/scratch_buffer.h
> @@ -60,13 +60,18 @@
> #include <stdbool.h>
> #include <stddef.h>
> #include <stdlib.h>
> +#include <stdalign.h>
>
> /* Scratch buffer. Must be initialized with scratch_buffer_init
> before its use. */
> struct scratch_buffer {
> void *data; /* Pointer to the beginning of the scratch area. */
> size_t length; /* Allocated space at the data pointer, in bytes. */
> +#if __alignas_is_defined
> + _Alignas (max_align_t) char __space[1024];
> +#else
> max_align_t __space[(1023 + sizeof (max_align_t)) / sizeof (max_align_t)];
> +#endif
Okay, I think.
(Richard has spoken: The code with max_align_t is okay as well as far as
GCC is concerned. But I think it's useful to keep the initial buffer
size in sync on all architectures to reduce variance, so please push
this change.)
Thanks,
Florian.
More information about the Libc-alpha
mailing list