]> granicus.if.org Git - clang/commitdiff
__attribute__((aligned)) was being ignored!
authorDaniel Dunbar <daniel@zuster.org>
Wed, 18 Feb 2009 20:06:09 +0000 (20:06 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 18 Feb 2009 20:06:09 +0000 (20:06 +0000)
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

lib/Sema/SemaDeclAttr.cpp
test/Sema/struct-packed-align.c

index a385d97f6809d068eab0061d08bd31fa7a841e87..614e53a751a567e71cdec41970a6d2de93358f55 100644 (file)
@@ -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;
   }
   
index 8173f0f2827271694d9145e6c4b50c010b1f2999..2b5a889580f59525e698f32ddb3ff497712e587f 100644 (file)
@@ -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;