1 // RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 -emit-llvm -o - %s | FileCheck %s 2 3 // PR4610 4 #pragma pack(4) 5 struct ref { 6 struct ref *next; 7 } refs; 8 9 // PR13580 10 struct S 11 { 12 char a[3]; 13 #pragma pack(1) 14 struct T 15 { 16 char b; 17 int c; 18 } d; 19 #pragma pack() 20 struct T2 21 { 22 char b; 23 int c; 24 } d2; 25 } ss; 26 27 struct S3 28 { 29 char a[3]; 30 #pragma pack(push, 2) 31 struct T3 32 { 33 char b; 34 int c; 35 } d; 36 #pragma pack(pop) 37 struct T32 38 { 39 char b; 40 int c; 41 } e; 42 } s3; 43 44 struct S4 45 { 46 char a[3]; 47 #pragma align=packed 48 struct T4 49 { 50 char b; 51 int c; 52 } d; 53 int e; 54 } s4; 55 56 // CHECK: [[struct_ref:%[a-zA-Z0-9_.]+]] = type { [[struct_ref]]* } 57 // CHECK: [[struct_S:%[a-zA-Z0-9_.]+]] = type { [3 x i8], [[struct_T:%[a-zA-Z0-9_.]+]], [[struct_T2:%[a-zA-Z0-9_.]+]] } 58 // CHECK: [[struct_T]] = type <{ i8, i32 }> 59 // CHECK: [[struct_T2]] = type { i8, i32 } 60 61 // CHECK: %struct.S3 = type { [3 x i8], i8, %struct.T3, %struct.T32 } 62 // CHECK: %struct.T3 = type <{ i8, i8, i32 }> 63 // CHECK: %struct.T32 = type { i8, i32 } 64 // CHECK: %struct.S4 = type { [3 x i8], %struct.T4, i32 } 65 // CHECK: %struct.T4 = type <{ i8, i32 }> 66 67 // CHECK: @refs = common global [[struct_ref]] 68 // CHECK: @ss = common global [[struct_S]] 69