Oct 22, 2025 1:44:22 PM Richard Biener <[email protected]>:

> On Wed, Oct 22, 2025 at 1:31 PM Peter0x44 <[email protected]> wrote:
>>
>> Oct 22, 2025 9:28:07 AM Richard Biener <[email protected]>:
>>
>>> On Wed, Oct 22, 2025 at 2:22 AM Peter Damianov <[email protected]> 
>>> wrote:
>>>>
>>>> C23 adds a memalignment function to determine the alignment of a pointer.
>>>> Given how simple it is (convert pointer to an integer then return (p & 
>>>> -p)),
>>>> GCC should support expanding it inline.
>>>>
>>>> This patch implements __builtin_memalignment which expands to p & -p
>>>
>>> Does C23 add '__builtin_memalignment' literally?  If not, why do we need
>>> an indirection through a builtin and not implement that in terms of p & -p
>>> directly?
>>
>> I don't understand this question. I did check the following:
>>
>> size_t memalignment(void*);
>>
>> And the call to it was inline.
>>
>> Could you please elaborate?
>
> Ah, so C23 documents a new function in the standard library called 
> memalignment?
> And not a new keyword like _Alignof, etc.?

Yes, exactly. Here's the commit adding it to glibc.
https://sourceware.org/cgit/glibc/commit/?id=ea18d5a4c2583726060326b8a348de0845c22aa1

>
> For that it looks reasonable.  Please be defensive as to expected arguments.
> Consider
>
> struct X { int bla; } memalignment ();
>
> void foo()
> {
>   struct X x = memalignment ();
> }
>
> or similar.  GCC is happily considering mis-matching declarations as builtins.

OK. I will see what I can do about this and resubmit. Thanks.

>
> Richard.
>
>>

Regards,
Peter Damianov

Reply via email to