Jonathan Wakely
8a9a593115
Add alloc_align attribute to memalign et al
...
GCC 4.9.0 added the alloc_align attribute to say that a function
argument specifies the alignment of the returned pointer. Clang supports
the attribute too. Using the attribute can allow a compiler to generate
better code if it knows the returned pointer has a minimum alignment.
See https://gcc.gnu.org/PR60092 for more details.
GCC implicitly knows the semantics of aligned_alloc and posix_memalign,
but not the obsolete memalign. As a result, GCC generates worse code
when memalign is used, compared to aligned_alloc. Clang knows about
aligned_alloc and memalign, but not posix_memalign.
This change adds a new __attribute_alloc_align__ macro to <sys/cdefs.h>
and then uses it on memalign (where it helps GCC) and aligned_alloc
(where GCC and Clang already know the semantics, but it doesn't hurt)
and xposix_memalign. It can't be used on posix_memalign because that
doesn't return a pointer (the allocated pointer is returned via a void**
parameter instead).
Unlike the alloc_size attribute, alloc_align only allows a single
argument. That means the new __attribute_alloc_align__ macro doesn't
really need to be used with double parentheses to protect a comma
between its arguments. For consistency with __attribute_alloc_size__
this patch defines it the same way, so that double parentheses are
required.
Signed-off-by: Jonathan Wakely <jwakely@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
2021-10-21 00:19:20 +01:00
..
2021-01-02 12:17:34 -08:00
2021-10-21 00:19:20 +01:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2020-09-11 14:35:32 -03:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-04-21 19:49:50 +02:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-05-07 13:54:36 -03:00
2021-06-22 09:51:14 +02:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2012-01-07 23:57:22 -05:00
2021-06-22 09:51:14 +02:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-27 09:13:06 -03:00
2018-02-21 18:01:11 +00:00
2020-09-11 14:35:32 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-07-22 18:37:59 +05:30
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-05-05 17:19:38 +02:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-08 21:02:12 +05:30
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-21 15:55:01 +00:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-04-15 11:32:40 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2016-12-21 11:52:19 +01:00
2017-02-25 09:59:46 -05:00
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2014-11-05 15:24:08 +05:30
2021-07-21 11:58:09 +02:00
2021-07-21 11:58:09 +02:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2014-12-16 10:27:16 +01:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-09-03 22:06:44 +05:30
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-06-15 10:42:11 -03:00
2021-06-22 12:09:52 -03:00
2021-06-15 10:42:11 -03:00
2021-06-22 12:09:52 -03:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2012-01-07 23:57:22 -05:00
2017-02-06 18:15:18 +00:00
2021-01-02 12:17:34 -08:00
2021-03-01 15:58:01 +01:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00
2021-03-01 15:58:01 +01:00
2021-01-02 12:17:34 -08:00
2021-01-02 12:17:34 -08:00