From: Daniel Dunbar Date: Wed, 18 Feb 2009 20:06:09 +0000 (+0000) Subject: __attribute__((aligned)) was being ignored! X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7549c5589ac0d2087e55f2bdd4854adef23f29fd;p=clang __attribute__((aligned)) was being ignored! This knocks out another 8 gcc/compat/i386 & x86_64 failures. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64947 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp index a385d97f68..614e53a751 100644 --- a/lib/Sema/SemaDeclAttr.cpp +++ b/lib/Sema/SemaDeclAttr.cpp @@ -1177,8 +1177,9 @@ static void HandleAlignedAttr(Decl *d, const AttributeList &Attr, Sema &S) { unsigned Align = 0; if (Attr.getNumArgs() == 0) { // FIXME: This should be the target specific maximum alignment. - // (For now we just use 128 bits which is the maximum on X86. + // (For now we just use 128 bits which is the maximum on X86). Align = 128; + d->addAttr(new AlignedAttr(Align)); return; } diff --git a/test/Sema/struct-packed-align.c b/test/Sema/struct-packed-align.c index 8173f0f282..2b5a889580 100644 --- a/test/Sema/struct-packed-align.c +++ b/test/Sema/struct-packed-align.c @@ -46,6 +46,14 @@ struct __attribute__((aligned(8))) as1 { extern int e1[sizeof(struct as1) == 8 ? 1 : -1]; extern int e2[__alignof(struct as1) == 8 ? 1 : -1]; +// FIXME: Will need to force arch once max usable alignment isn't hard +// coded. +struct __attribute__((aligned)) as1_2 { + char c; +}; +extern int e1_2[sizeof(struct as1_2) == 16 ? 1 : -1]; +extern int e2_2[__alignof(struct as1_2) == 16 ? 1 : -1]; + struct as2 { char c; int __attribute__((aligned(8))) a;