1b3fc0603e5b64b659bc6a37cc209dc404d3093f4Daniel Dunbar// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s 28e8fb3be5bd78f0564444eca02b404566a5f3b5dAndy Gibbs// expected-no-diagnostics 3c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 4c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar#include <stddef.h> 5c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 6c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar#pragma options align=mac68k 7c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 8c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbartypedef float __attribute__((vector_size (8))) v2f_t; 9c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbartypedef float __attribute__((vector_size (16))) v4f_t; 10c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 11c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a0_0[__alignof(v2f_t) == 8 ? 1 : -1]; 12c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a0_1[__alignof(v4f_t) == 16 ? 1 : -1]; 13c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 14c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarstruct s1 { 15c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar char f0; 16c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar int f1; 17c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar}; 18c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a1_0[offsetof(struct s1, f0) == 0 ? 1 : -1]; 19c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a1_1[offsetof(struct s1, f1) == 2 ? 1 : -1]; 20c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a1_2[sizeof(struct s1) == 6 ? 1 : -1]; 21c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a1_3[__alignof(struct s1) == 2 ? 1 : -1]; 22c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 23c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarstruct s2 { 24c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar char f0; 25c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar double f1; 26c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar}; 27c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a2_0[offsetof(struct s2, f0) == 0 ? 1 : -1]; 28c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a2_1[offsetof(struct s2, f1) == 2 ? 1 : -1]; 29c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a2_2[sizeof(struct s2) == 10 ? 1 : -1]; 30c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a2_3[__alignof(struct s2) == 2 ? 1 : -1]; 31c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 32c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarstruct s3 { 33c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar char f0; 34c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar v4f_t f1; 35c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar}; 36c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a3_0[offsetof(struct s3, f0) == 0 ? 1 : -1]; 37c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a3_1[offsetof(struct s3, f1) == 2 ? 1 : -1]; 38c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a3_2[sizeof(struct s3) == 18 ? 1 : -1]; 39c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a3_3[__alignof(struct s3) == 2 ? 1 : -1]; 40c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 41c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarstruct s4 { 42c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar char f0; 43c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar char f1; 44c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar}; 45c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a4_0[offsetof(struct s4, f0) == 0 ? 1 : -1]; 46c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a4_1[offsetof(struct s4, f1) == 1 ? 1 : -1]; 47c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a4_2[sizeof(struct s4) == 2 ? 1 : -1]; 48c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a4_3[__alignof(struct s4) == 2 ? 1 : -1]; 49c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 50c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarstruct s5 { 51c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar unsigned f0 : 9; 52c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar unsigned f1 : 9; 53c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar}; 54c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a5_0[sizeof(struct s5) == 4 ? 1 : -1]; 55c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a5_1[__alignof(struct s5) == 2 ? 1 : -1]; 56c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 57c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarstruct s6 { 58c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar unsigned : 0; 59c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar unsigned : 0; 60c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar}; 61c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a6_0[sizeof(struct s6) == 0 ? 1 : -1]; 62c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a6_1[__alignof(struct s6) == 2 ? 1 : -1]; 63c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 64c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarstruct s7 { 65c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar char : 1; 66c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar unsigned : 1; 67c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar}; 68c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a7_0[sizeof(struct s7) == 2 ? 1 : -1]; 69c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a7_1[__alignof(struct s7) == 2 ? 1 : -1]; 70c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 71c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarstruct s8 { 72c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar char f0; 73c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar unsigned : 1; 74c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar}; 75c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a8_0[sizeof(struct s8) == 2 ? 1 : -1]; 76c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a8_1[__alignof(struct s8) == 2 ? 1 : -1]; 77c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 78c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarstruct s9 { 79c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar char f0[3]; 80c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar unsigned : 0; 81c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar char f1; 82c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar}; 83c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a9_0[sizeof(struct s9) == 6 ? 1 : -1]; 84c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a9_1[__alignof(struct s9) == 2 ? 1 : -1]; 85c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 86c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarstruct s10 { 87c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar char f0; 88c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar}; 89c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a10_0[sizeof(struct s10) == 2 ? 1 : -1]; 90c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a10_1[__alignof(struct s10) == 2 ? 1 : -1]; 91c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar 92c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarstruct s11 { 93c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar char f0; 94c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar v2f_t f1; 95c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbar}; 96c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a11_0[offsetof(struct s11, f0) == 0 ? 1 : -1]; 97c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a11_1[offsetof(struct s11, f1) == 2 ? 1 : -1]; 98c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a11_2[sizeof(struct s11) == 10 ? 1 : -1]; 99c6082fe347a414a2e19f2ad8fe41720f10733296Daniel Dunbarextern int a11_3[__alignof(struct s11) == 2 ? 1 : -1]; 1003ef38eea7ce400718e4ab523b4704ae1fd8f940fEli Friedman 1013ef38eea7ce400718e4ab523b4704ae1fd8f940fEli Friedman#pragma options align=reset 1023ef38eea7ce400718e4ab523b4704ae1fd8f940fEli Friedman 1033ef38eea7ce400718e4ab523b4704ae1fd8f940fEli Friedmanvoid f12(void) { 1043ef38eea7ce400718e4ab523b4704ae1fd8f940fEli Friedman #pragma options align=mac68k 1053ef38eea7ce400718e4ab523b4704ae1fd8f940fEli Friedman struct s12 { 1063ef38eea7ce400718e4ab523b4704ae1fd8f940fEli Friedman char f0; 1073ef38eea7ce400718e4ab523b4704ae1fd8f940fEli Friedman int f1; 1083ef38eea7ce400718e4ab523b4704ae1fd8f940fEli Friedman }; 1093ef38eea7ce400718e4ab523b4704ae1fd8f940fEli Friedman #pragma options align=reset 1103ef38eea7ce400718e4ab523b4704ae1fd8f940fEli Friedman extern int a12[sizeof(struct s12) == 6 ? 1 : -1]; 1113ef38eea7ce400718e4ab523b4704ae1fd8f940fEli Friedman} 112