http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56334



             Bug #: 56334

           Summary: __attribute__((aligned)) documentation is outdated and

                    misleading.

    Classification: Unclassified

           Product: gcc

           Version: 4.8.0

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: other

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: bro...@gcc.gnu.org





The documentation of the "aligned" attribute

(http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html) states:



"Note that the effectiveness of aligned attributes may be limited by inherent

limitations in your linker. On many systems, the linker is only able to arrange

for variables to be aligned up to a certain maximum alignment. (For some

linkers, the maximum supported alignment may be very very small.) If your

linker is only able to align variables up to a maximum of 8-byte alignment,

then specifying aligned(16) in an __attribute__ still only provides you with

8-byte alignment. See your linker documentation for further information."



This is erroneous in two ways:



(1) As of the closure of bug 33721, we generate code to align variables at

runtime when the linker cannot guarantee a given alignment at link time.  Thus,

the effectiveness is no longer limited by the linker -- but it is probably

useful to mention that there can be some (very minor) runtime cost.



(2) The statement "See your linker documentation for further information" is

entirely unhelpful, because the GNU ld documentation makes no mention of

alignment limitations (or, for that matter, of aligning variables at all). 

This point is probably moot if we fix item 1, but if it remains, it would be

helpful to note that the real issue is that GCC aligns things with respect to

the start of the relevant block of instructions and then the linker is

responsible for aligning that block.

Reply via email to