lkml.org 
[lkml]   [2007]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] Optimize generic get_unaligned / put_unaligned implementations.
    On Thu, 15 Feb 2007 22:18:39 +0000
    Ralf Baechle <ralf@linux-mips.org> wrote:

    > On Thu, Feb 15, 2007 at 01:53:58PM -0800, Andrew Morton wrote:
    >
    > > > The whole union thing was only needed to get rid of a warning but Marcel's
    > > > solution does the same thing by attaching the packed keyword to the entire
    > > > structure instead, so this patch is now using his macros but using __packed
    > > > instead.
    > >
    > > How do we know this trick will work as-designed across all versions of gcc
    > > and icc (at least) and for all architectures and for all sets of compiler
    > > options?
    > >
    > > Basically, it has to be guaranteed by a C standard. Is it?
    >
    > Gcc info page says:
    >
    > [...]
    > `packed'
    > The `packed' attribute specifies that a variable or structure field
    > should have the smallest possible alignment--one byte for a
    > variable, and one bit for a field, unless you specify a larger
    > value with the `aligned' attribute.
    > [...]
    >

    hm. So if I have

    struct bar {
    unsigned long b;
    } __attribute__((packed));

    struct foo {
    unsigned long u;
    struct bar b;
    };

    then the compiler can see that foo.b.b is well-aligned, regardless of the
    packedness.

    Plus some crazy people compile the kernel with icc (or at least they used
    to). What happens there?

    > Qed?

    worried.
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-02-16 00:45    [W:3.035 / U:0.928 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site