]> granicus.if.org Git - clang/commitdiff
Make sure we allow "#pragma options align=mac68k" in function-local contexts. <rdar...
authorEli Friedman <eli.friedman@gmail.com>
Mon, 8 Oct 2012 23:52:38 +0000 (23:52 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Mon, 8 Oct 2012 23:52:38 +0000 (23:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165462 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Parse/ParseStmt.cpp
test/Sema/pragma-align-mac68k.c

index 776423c28beb7b9a65554ecdcebee0ac9ccda64d..635f61b82135355ec3ba5ab9e9cdd07357654fdd 100644 (file)
@@ -254,6 +254,11 @@ Retry:
     HandlePragmaPack();
     return StmtEmpty();
 
+  case tok::annot_pragma_align:
+    ProhibitAttributes(Attrs);
+    HandlePragmaAlign();
+    return StmtEmpty();
+
   case tok::annot_pragma_fp_contract:
     ProhibitAttributes(Attrs);
     HandlePragmaFPContract();
index fb8da515bbc7740e8b53d68eee1d7d8a4c43f179..64c693907f9c01b0b12dfbf1f91822c67cf3147e 100644 (file)
@@ -96,3 +96,15 @@ extern int a11_0[offsetof(struct s11, f0) == 0 ? 1 : -1];
 extern int a11_1[offsetof(struct s11, f1) == 2 ? 1 : -1];
 extern int a11_2[sizeof(struct s11) == 10 ? 1 : -1];
 extern int a11_3[__alignof(struct s11) == 2 ? 1 : -1];
+
+#pragma options align=reset
+
+void f12(void) {
+  #pragma options align=mac68k
+  struct s12 {
+    char f0;
+    int  f1;
+  };
+  #pragma options align=reset
+  extern int a12[sizeof(struct s12) == 6 ? 1 : -1];
+}