1adaf62ceSAkira Hatanaka // RUN: %clang_cc1 -fsyntax-only -verify %s 2adaf62ceSAkira Hatanaka 3adaf62ceSAkira Hatanaka typedef char __attribute__((aligned(2))) AlignedChar; 4adaf62ceSAkira Hatanaka typedef AlignedChar arrayType0[4]; // expected-error {{size of array element}} 5adaf62ceSAkira Hatanaka 6adaf62ceSAkira Hatanaka struct __attribute__((aligned(8))) AlignedStruct { 7adaf62ceSAkira Hatanaka int m0; 8adaf62ceSAkira Hatanaka }; 9adaf62ceSAkira Hatanaka 10adaf62ceSAkira Hatanaka struct __attribute__((packed)) PackedStruct { 11adaf62ceSAkira Hatanaka char m0; 12adaf62ceSAkira Hatanaka int i0; 13adaf62ceSAkira Hatanaka }; 14adaf62ceSAkira Hatanaka 15adaf62ceSAkira Hatanaka typedef PackedStruct AlignedPackedStruct __attribute__((aligned(4))); 16adaf62ceSAkira Hatanaka typedef AlignedPackedStruct arrayType1[4]; // expected-error {{(5 bytes) isn't a multiple of its alignment (4 bytes)}} 17adaf62ceSAkira Hatanaka 18adaf62ceSAkira Hatanaka AlignedChar a0[1]; // expected-error {{size of array element}} 19adaf62ceSAkira Hatanaka AlignedStruct a1[1]; 20adaf62ceSAkira Hatanaka AlignedPackedStruct a2[1]; // expected-error {{size of array element}} 21adaf62ceSAkira Hatanaka 22adaf62ceSAkira Hatanaka struct S { 23adaf62ceSAkira Hatanaka AlignedChar m0[1]; // expected-error {{size of array element}} 24adaf62ceSAkira Hatanaka AlignedStruct m1[1]; 25adaf62ceSAkira Hatanaka AlignedPackedStruct m2[1]; // expected-error {{size of array element}} 26adaf62ceSAkira Hatanaka }; 27adaf62ceSAkira Hatanaka test(char * p)28adaf62ceSAkira Hatanakavoid test(char *p) { 29adaf62ceSAkira Hatanaka auto p0 = (AlignedChar(*)[1])p; // expected-error {{size of array element}} 30adaf62ceSAkira Hatanaka auto r0 = (AlignedChar(&)[1])(*p); // expected-error {{size of array element}} 31adaf62ceSAkira Hatanaka auto p1 = new AlignedChar[1]; // expected-error {{size of array element}} 32adaf62ceSAkira Hatanaka auto p2 = (AlignedStruct(*)[1])p; 33adaf62ceSAkira Hatanaka auto p3 = new AlignedStruct[1]; 34adaf62ceSAkira Hatanaka auto p4 = (AlignedPackedStruct(*)[1])p; // expected-error {{size of array element}} 35adaf62ceSAkira Hatanaka auto p5 = new AlignedPackedStruct[1]; // expected-error {{size of array element}} 36*0ca1051bSAkira Hatanaka auto p6 = new AlignedPackedStruct; 37adaf62ceSAkira Hatanaka } 38