diff options
Diffstat (limited to 'test/CodeGen/pragma-pack-1.c')
-rw-r--r-- | test/CodeGen/pragma-pack-1.c | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/test/CodeGen/pragma-pack-1.c b/test/CodeGen/pragma-pack-1.c index c30a62a..2a71c8f 100644 --- a/test/CodeGen/pragma-pack-1.c +++ b/test/CodeGen/pragma-pack-1.c @@ -1,7 +1,68 @@ -// RUN: %clang_cc1 -emit-llvm -o - %s +// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 -emit-llvm -o - %s | FileCheck %s // PR4610 #pragma pack(4) struct ref { struct ref *next; } refs; + +// PR13580 +struct S +{ + char a[3]; +#pragma pack(1) + struct T + { + char b; + int c; + } d; +#pragma pack() + struct T2 + { + char b; + int c; + } d2; +} ss; + +struct S3 +{ + char a[3]; +#pragma pack(push, 2) + struct T3 + { + char b; + int c; + } d; +#pragma pack(pop) + struct T32 + { + char b; + int c; + } e; +} s3; + +struct S4 +{ + char a[3]; +#pragma align=packed + struct T4 + { + char b; + int c; + } d; + int e; +} s4; + +// CHECK: [[struct_ref:%[a-zA-Z0-9_.]+]] = type <{ [[struct_ref]]* }> +// CHECK: [[struct_S:%[a-zA-Z0-9_.]+]] = type { [3 x i8], [[struct_T:%[a-zA-Z0-9_.]+]], [[struct_T2:%[a-zA-Z0-9_.]+]] } +// CHECK: [[struct_T]] = type <{ i8, i32 }> +// CHECK: [[struct_T2]] = type { i8, i32 } + +// CHECK: %struct.S3 = type <{ [3 x i8], i8, %struct.T3, [2 x i8], %struct.T32 }> +// CHECK: %struct.T3 = type <{ i8, i8, i32 }> +// CHECK: %struct.T32 = type { i8, i32 } +// CHECK: %struct.S4 = type { [3 x i8], %struct.T4, i32 } +// CHECK: %struct.T4 = type <{ i8, i32 }> + +// CHECK: @refs = common global [[struct_ref]] +// CHECK: @ss = common global [[struct_S]] |