This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: question about attribute aligned for functions


* Martin Sebor:

> At the same time, the following passes on x86_64:
>
>   __attribute__ ((aligned (1))) void f1 (void) { }
>   _Static_assert (__alignof__ (f1) == 1);   // wrong alignof result
>
>   __attribute__ ((aligned)) void f0 (void) { }
>   _Static_assert (__alignof__ (f0) == 16);
>
>   __attribute__ ((aligned (2))) void f2 (void) { }
>   _Static_assert (__alignof__ (f2) == 2);

Is there any value in implementing alignof on functions?

sizeof (f1) is defined to be 1, allegedly to support function pointer
arithmetic (which is why sizeof (void) is 1 as well).  In practice, this
is confusing to the programmer because the size of a function is at
least known to the linker.

Thanks,
Florian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]