diff options
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiateDecl.cpp | 4 | ||||
-rw-r--r-- | clang/test/CodeGen/pragma-detect_mismatch.c | 24 | ||||
-rw-r--r-- | clang/test/CodeGenOpenCL/addr-space-struct-arg.cl | 46 | ||||
-rw-r--r-- | clang/test/Misc/ast-dump-arm-attr.c | 10 | ||||
-rw-r--r-- | clang/test/Misc/ast-dump-msp430-attr.c | 10 | ||||
-rw-r--r-- | clang/test/Misc/attr-source-range.cpp | 32 | ||||
-rw-r--r-- | clang/test/PCH/stmt-attrs.cpp | 48 | ||||
-rw-r--r-- | clang/test/Sema/attr-bounded.c | 30 | ||||
-rw-r--r-- | clang/test/Sema/attr-msp430.c | 12 | ||||
-rw-r--r-- | clang/test/Sema/attr-nonnull.c | 14 | ||||
-rw-r--r-- | clang/test/Sema/ms_bitfield_layout.c | 530 |
11 files changed, 380 insertions, 380 deletions
diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp index a89bf288130..d3e26c3bc59 100644 --- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -661,8 +661,8 @@ Decl *TemplateDeclInstantiator::VisitIndirectFieldDecl(IndirectFieldDecl *D) { SemaRef.Context, Owner, D->getLocation(), D->getIdentifier(), T, NamedChain, D->getChainingSize()); - for (const auto *Attr : D->attrs())
- IndirectField->addAttr(Attr->clone(SemaRef.Context));
+ for (const auto *Attr : D->attrs()) + IndirectField->addAttr(Attr->clone(SemaRef.Context)); IndirectField->setImplicit(D->isImplicit()); IndirectField->setAccess(D->getAccess()); diff --git a/clang/test/CodeGen/pragma-detect_mismatch.c b/clang/test/CodeGen/pragma-detect_mismatch.c index b223a61c9b0..f15b75da0ea 100644 --- a/clang/test/CodeGen/pragma-detect_mismatch.c +++ b/clang/test/CodeGen/pragma-detect_mismatch.c @@ -1,12 +1,12 @@ -// RUN: %clang_cc1 %s -triple i686-pc-win32 -fms-extensions -emit-llvm -o - | FileCheck %s
-
-#pragma detect_mismatch("test", "1")
-
-#define BAR "2"
-#pragma detect_mismatch("test2", BAR)
-
-// CHECK: !llvm.module.flags = !{{{.*}}}
-// CHECK: !{{[0-9]+}} = metadata !{i32 6, metadata !"Linker Options", metadata ![[link_opts:[0-9]+]]}
-// CHECK: ![[link_opts]] = metadata !{metadata ![[test:[0-9]+]], metadata ![[test2:[0-9]+]]}
-// CHECK: ![[test]] = metadata !{metadata !"/FAILIFMISMATCH:\22test=1\22"}
-// CHECK: ![[test2]] = metadata !{metadata !"/FAILIFMISMATCH:\22test2=2\22"}
+// RUN: %clang_cc1 %s -triple i686-pc-win32 -fms-extensions -emit-llvm -o - | FileCheck %s + +#pragma detect_mismatch("test", "1") + +#define BAR "2" +#pragma detect_mismatch("test2", BAR) + +// CHECK: !llvm.module.flags = !{{{.*}}} +// CHECK: !{{[0-9]+}} = metadata !{i32 6, metadata !"Linker Options", metadata ![[link_opts:[0-9]+]]} +// CHECK: ![[link_opts]] = metadata !{metadata ![[test:[0-9]+]], metadata ![[test2:[0-9]+]]} +// CHECK: ![[test]] = metadata !{metadata !"/FAILIFMISMATCH:\22test=1\22"} +// CHECK: ![[test2]] = metadata !{metadata !"/FAILIFMISMATCH:\22test2=2\22"} diff --git a/clang/test/CodeGenOpenCL/addr-space-struct-arg.cl b/clang/test/CodeGenOpenCL/addr-space-struct-arg.cl index f04923d39c5..d711f78d4ef 100644 --- a/clang/test/CodeGenOpenCL/addr-space-struct-arg.cl +++ b/clang/test/CodeGenOpenCL/addr-space-struct-arg.cl @@ -1,23 +1,23 @@ -// RUN: %clang_cc1 %s -emit-llvm -o - -O0 -ffake-address-space-map -triple i686-pc-darwin | FileCheck %s
-
-typedef struct {
- int cells[9];
-} Mat3X3;
-
-typedef struct {
- int cells[16];
-} Mat4X4;
-
-Mat4X4 __attribute__((noinline)) foo(Mat3X3 in) {
- Mat4X4 out;
- return out;
-}
-
-kernel void ker(global Mat3X3 *in, global Mat4X4 *out) {
- out[0] = foo(in[1]);
-}
-
-// Expect two mem copies: one for the argument "in", and one for
-// the return value.
-// CHECK: call void @llvm.memcpy.p0i8.p1i8.i32(i8*
-// CHECK: call void @llvm.memcpy.p1i8.p0i8.i32(i8 addrspace(1)*
+// RUN: %clang_cc1 %s -emit-llvm -o - -O0 -ffake-address-space-map -triple i686-pc-darwin | FileCheck %s + +typedef struct { + int cells[9]; +} Mat3X3; + +typedef struct { + int cells[16]; +} Mat4X4; + +Mat4X4 __attribute__((noinline)) foo(Mat3X3 in) { + Mat4X4 out; + return out; +} + +kernel void ker(global Mat3X3 *in, global Mat4X4 *out) { + out[0] = foo(in[1]); +} + +// Expect two mem copies: one for the argument "in", and one for +// the return value. +// CHECK: call void @llvm.memcpy.p0i8.p1i8.i32(i8* +// CHECK: call void @llvm.memcpy.p1i8.p0i8.i32(i8 addrspace(1)* diff --git a/clang/test/Misc/ast-dump-arm-attr.c b/clang/test/Misc/ast-dump-arm-attr.c index bec3531828b..41328165d21 100644 --- a/clang/test/Misc/ast-dump-arm-attr.c +++ b/clang/test/Misc/ast-dump-arm-attr.c @@ -1,5 +1,5 @@ -// RUN: %clang_cc1 -triple arm-apple-darwin -ast-dump -ast-dump-filter Test %s | FileCheck --strict-whitespace %s
-
-__attribute__((interrupt)) void Test(void);
-// CHECK: FunctionDecl{{.*}}Test
-// CHECK-NEXT: ARMInterruptAttr
+// RUN: %clang_cc1 -triple arm-apple-darwin -ast-dump -ast-dump-filter Test %s | FileCheck --strict-whitespace %s + +__attribute__((interrupt)) void Test(void); +// CHECK: FunctionDecl{{.*}}Test +// CHECK-NEXT: ARMInterruptAttr diff --git a/clang/test/Misc/ast-dump-msp430-attr.c b/clang/test/Misc/ast-dump-msp430-attr.c index 170e0bef9d9..3ccb3bdb705 100644 --- a/clang/test/Misc/ast-dump-msp430-attr.c +++ b/clang/test/Misc/ast-dump-msp430-attr.c @@ -1,5 +1,5 @@ -// RUN: %clang_cc1 -triple msp430-unknown-unknown -ast-dump -ast-dump-filter Test %s | FileCheck --strict-whitespace %s
-
-__attribute__((interrupt(12))) void Test(void);
-// CHECK: FunctionDecl{{.*}}Test
-// CHECK-NEXT: MSP430InterruptAttr
+// RUN: %clang_cc1 -triple msp430-unknown-unknown -ast-dump -ast-dump-filter Test %s | FileCheck --strict-whitespace %s + +__attribute__((interrupt(12))) void Test(void); +// CHECK: FunctionDecl{{.*}}Test +// CHECK-NEXT: MSP430InterruptAttr diff --git a/clang/test/Misc/attr-source-range.cpp b/clang/test/Misc/attr-source-range.cpp index 6ad4ac26fca..d5540ad64fa 100644 --- a/clang/test/Misc/attr-source-range.cpp +++ b/clang/test/Misc/attr-source-range.cpp @@ -1,16 +1,16 @@ -// RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-print-source-range-info %s 2>&1 | FileCheck %s
-
-void f(int i) __attribute__((format_arg(1)));
-// CHECK: attr-source-range.cpp:3:30:{3:41-3:42}{3:8-3:13}
-
-void g(int i, ...) __attribute__((format(printf, 1, 1)));
-// CHECK: attr-source-range.cpp:6:35:{6:50-6:51}{6:8-6:13}
-
-int h(void) __attribute__((returns_nonnull));
-// CHECK: attr-source-range.cpp:9:28:{9:1-9:4}
-
-void i(int j) __attribute__((nonnull(1)));
-// CHECK: attr-source-range.cpp:12:30:{12:38-12:39}{12:8-12:13}
-
-void j(__attribute__((nonnull)) int i);
-// CHECK: attr-source-range.cpp:15:23:{15:8-15:38}
+// RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-print-source-range-info %s 2>&1 | FileCheck %s + +void f(int i) __attribute__((format_arg(1))); +// CHECK: attr-source-range.cpp:3:30:{3:41-3:42}{3:8-3:13} + +void g(int i, ...) __attribute__((format(printf, 1, 1))); +// CHECK: attr-source-range.cpp:6:35:{6:50-6:51}{6:8-6:13} + +int h(void) __attribute__((returns_nonnull)); +// CHECK: attr-source-range.cpp:9:28:{9:1-9:4} + +void i(int j) __attribute__((nonnull(1))); +// CHECK: attr-source-range.cpp:12:30:{12:38-12:39}{12:8-12:13} + +void j(__attribute__((nonnull)) int i); +// CHECK: attr-source-range.cpp:15:23:{15:8-15:38} diff --git a/clang/test/PCH/stmt-attrs.cpp b/clang/test/PCH/stmt-attrs.cpp index 3d7c7a27a7e..170e34975e6 100644 --- a/clang/test/PCH/stmt-attrs.cpp +++ b/clang/test/PCH/stmt-attrs.cpp @@ -1,24 +1,24 @@ -// RUN: %clang_cc1 -std=c++11 -emit-pch -o %t.a %s
-// RUN: %clang_cc1 -std=c++11 -include-pch %t.a %s -ast-print -o - | FileCheck %s
-
-#ifndef HEADER
-#define HEADER
-
-inline void test(int i) {
- switch (i) {
- case 1:
- // Notice that the NullStmt has two attributes.
- // CHECK: {{\[\[clang::fallthrough\]\] \[\[clang::fallthrough\]\]}}
- [[clang::fallthrough]] [[clang::fallthrough]];
- case 2:
- break;
- }
-}
-
-#else
-
-void foo(void) {
- test(1);
-}
-
-#endif
+// RUN: %clang_cc1 -std=c++11 -emit-pch -o %t.a %s +// RUN: %clang_cc1 -std=c++11 -include-pch %t.a %s -ast-print -o - | FileCheck %s + +#ifndef HEADER +#define HEADER + +inline void test(int i) { + switch (i) { + case 1: + // Notice that the NullStmt has two attributes. + // CHECK: {{\[\[clang::fallthrough\]\] \[\[clang::fallthrough\]\]}} + [[clang::fallthrough]] [[clang::fallthrough]]; + case 2: + break; + } +} + +#else + +void foo(void) { + test(1); +} + +#endif diff --git a/clang/test/Sema/attr-bounded.c b/clang/test/Sema/attr-bounded.c index bf71fedf2d3..3108fbdc401 100644 --- a/clang/test/Sema/attr-bounded.c +++ b/clang/test/Sema/attr-bounded.c @@ -1,15 +1,15 @@ -// RUN: %clang_cc1 -fsyntax-only %s
-// Make sure OpenBSD's bounded extension is accepted.
-
-typedef long ssize_t;
-typedef unsigned long size_t;
-typedef struct FILE FILE;
-
-ssize_t read(int, void *, size_t)
- __attribute__((__bounded__(__buffer__,2,3)));
-int readlink(const char *, char *, size_t)
- __attribute__((__bounded__(__string__,2,3)));
-size_t fread(void *, size_t, size_t, FILE *)
- __attribute__((__bounded__(__size__,1,3,2)));
-char *getwd(char *)
- __attribute__((__bounded__(__minbytes__,1,1024)));
\ No newline at end of file +// RUN: %clang_cc1 -fsyntax-only %s +// Make sure OpenBSD's bounded extension is accepted. + +typedef long ssize_t; +typedef unsigned long size_t; +typedef struct FILE FILE; + +ssize_t read(int, void *, size_t) + __attribute__((__bounded__(__buffer__,2,3))); +int readlink(const char *, char *, size_t) + __attribute__((__bounded__(__string__,2,3))); +size_t fread(void *, size_t, size_t, FILE *) + __attribute__((__bounded__(__size__,1,3,2))); +char *getwd(char *) + __attribute__((__bounded__(__minbytes__,1,1024))); diff --git a/clang/test/Sema/attr-msp430.c b/clang/test/Sema/attr-msp430.c index d08cd8ecc9e..26b2d8fcfd6 100644 --- a/clang/test/Sema/attr-msp430.c +++ b/clang/test/Sema/attr-msp430.c @@ -1,6 +1,6 @@ -// RUN: %clang_cc1 -triple msp430-unknown-unknown -fsyntax-only -verify %s
-
-int i;
-void f(void) __attribute__((interrupt(i))); /* expected-error {{'interrupt' attribute requires an integer constant}} */
-
-void f2(void) __attribute__((interrupt(12)));
+// RUN: %clang_cc1 -triple msp430-unknown-unknown -fsyntax-only -verify %s + +int i; +void f(void) __attribute__((interrupt(i))); /* expected-error {{'interrupt' attribute requires an integer constant}} */ + +void f2(void) __attribute__((interrupt(12))); diff --git a/clang/test/Sema/attr-nonnull.c b/clang/test/Sema/attr-nonnull.c index 8b8f00a2069..f8de31716a8 100644 --- a/clang/test/Sema/attr-nonnull.c +++ b/clang/test/Sema/attr-nonnull.c @@ -1,7 +1,7 @@ -// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-void f1(int *a1, int *a2, int *a3, int *a4, int *a5, int *a6, int *a7,
- int *a8, int *a9, int *a10, int *a11, int *a12, int *a13, int *a14,
- int *a15, int *a16) __attribute__((nonnull(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)));
-
-void f2(void) __attribute__((nonnull())); // expected-warning {{'nonnull' attribute applied to function with no pointer arguments}}
+// RUN: %clang_cc1 %s -verify -fsyntax-only + +void f1(int *a1, int *a2, int *a3, int *a4, int *a5, int *a6, int *a7, + int *a8, int *a9, int *a10, int *a11, int *a12, int *a13, int *a14, + int *a15, int *a16) __attribute__((nonnull(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16))); + +void f2(void) __attribute__((nonnull())); // expected-warning {{'nonnull' attribute applied to function with no pointer arguments}} diff --git a/clang/test/Sema/ms_bitfield_layout.c b/clang/test/Sema/ms_bitfield_layout.c index 8444f469d59..293df770cd7 100644 --- a/clang/test/Sema/ms_bitfield_layout.c +++ b/clang/test/Sema/ms_bitfield_layout.c @@ -1,265 +1,265 @@ -// RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple i686-pc-win32 -fms-extensions -fdump-record-layouts %s 2>/dev/null \
-// RUN: | FileCheck %s
-// RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple x86_64-pc-win32 -fms-extensions -fdump-record-layouts %s 2>/dev/null \
-// RUN: | FileCheck %s
-
-typedef struct A {
- char x;
- int a : 22;
- int : 0;
- int c : 10;
- char b : 3;
- char d: 4;
- short y;
-} A;
-
-// CHECK: Type: struct A
-// CHECK: Size:128
-// CHECK: Alignment:32
-// CHECK: FieldOffsets: [0, 32, 64, 64, 96, 99, 112]>
-
-typedef struct B {
- char x;
- int : 0;
- short a : 4;
- char y;
-} B;
-
-// CHECK: Type: struct B
-// CHECK: Size:48
-// CHECK: Alignment:16
-// CHECK: FieldOffsets: [0, 8, 16, 32]>
-
-typedef struct C {
- char x;
- short a : 4;
- int : 0;
- char y;
-} C;
-
-// CHECK: Type: struct C
-// CHECK: Size:64
-// CHECK: Alignment:32
-// CHECK: FieldOffsets: [0, 16, 32, 32]>
-
-typedef struct D {
- char x;
- short : 0;
- int : 0;
- char y;
-} D;
-
-// CHECK: Type: struct D
-// CHECK: Size:16
-// CHECK: Alignment:8
-// CHECK: FieldOffsets: [0, 8, 8, 8]>
-
-typedef union E {
- char x;
- long long a : 3;
- int b : 3;
- long long : 0;
- short y;
-} E;
-
-// CHECK: Type: union E
-// CHECK: Size:64
-// CHECK: Alignment:16
-// CHECK: FieldOffsets: [0, 0, 0, 0, 0]>
-
-typedef struct F {
- char x;
- char a : 3;
- char b : 3;
- char c : 3;
- short d : 6;
- short e : 6;
- short f : 6;
- short g : 11;
- short h : 11;
- short i : 11;
- short y;
-} F;
-
-// CHECK: Type: struct F
-// CHECK: Size:128
-// CHECK: Alignment:16
-// CHECK: FieldOffsets: [0, 8, 11, 16, 32, 38, 48, 64, 80, 96, 112]>
-
-typedef union G {
- char x;
- int a : 3;
- int : 0;
- long long : 0;
- short y;
-} G;
-
-// CHECK: Type: union G
-// CHECK: Size:32
-// CHECK: Alignment:16
-// CHECK: FieldOffsets: [0, 0, 0, 0, 0]>
-
-typedef struct H {
- unsigned short a : 1;
- unsigned char : 0;
- unsigned long : 0;
- unsigned short c : 1;
-} H;
-
-// CHECK: Type: struct H
-// CHECK: Size:32
-// CHECK: Alignment:16
-// CHECK: FieldOffsets: [0, 16, 16, 16]>
-
-typedef struct I {
- short : 8;
- __declspec(align(16)) short : 8;
-} I;
-
-// CHECK: Type: struct I
-// CHECK: Size:16
-// CHECK: Alignment:16
-// CHECK: FieldOffsets: [0, 8]
-
-#pragma pack(push, 1)
-
-typedef struct A1 {
- char x;
- int a : 22;
- int : 0;
- int c : 10;
- char b : 3;
- char d: 4;
- short y;
-} A1;
-
-// CHECK: Type: struct A1
-// CHECK: Size:96
-// CHECK: Alignment:8
-// CHECK: FieldOffsets: [0, 8, 40, 40, 72, 75, 80]>
-
-typedef struct B1 {
- char x;
- int : 0;
- short a : 4;
- char y;
-} B1;
-
-// CHECK: Type: struct B1
-// CHECK: Size:32
-// CHECK: Alignment:8
-// CHECK: FieldOffsets: [0, 8, 8, 24]>
-
-typedef struct C1 {
- char x;
- short a : 4;
- int : 0;
- char y;
-} C1;
-
-// CHECK: Type: struct C1
-// CHECK: Size:32
-// CHECK: Alignment:8
-// CHECK: FieldOffsets: [0, 8, 24, 24]>
-
-typedef struct D1 {
- char x;
- short : 0;
- int : 0;
- char y;
-} D1;
-
-// CHECK: Type: struct D1
-// CHECK: Size:16
-// CHECK: Alignment:8
-// CHECK: FieldOffsets: [0, 8, 8, 8]>
-
-typedef union E1 {
- char x;
- long long a : 3;
- int b : 3;
- long long : 0;
- short y;
-} E1;
-
-// CHECK: Type: union E1
-// CHECK: Size:64
-// CHECK: Alignment:8
-// CHECK: FieldOffsets: [0, 0, 0, 0, 0]>
-
-typedef struct F1 {
- char x;
- char a : 3;
- char b : 3;
- char c : 3;
- short d : 6;
- short e : 6;
- short f : 6;
- short g : 11;
- short h : 11;
- short i : 11;
- short y;
-} F1;
-
-// CHECK: Type: struct F1
-// CHECK: Size:120
-// CHECK: Alignment:8
-// CHECK: FieldOffsets: [0, 8, 11, 16, 24, 30, 40, 56, 72, 88, 104]>
-
-typedef union G1 {
- char x;
- int a : 3;
- int : 0;
- long long : 0;
- short y;
-} G1;
-
-// CHECK: Type: union G1
-// CHECK: Size:32
-// CHECK: Alignment:8
-// CHECK: FieldOffsets: [0, 0, 0, 0, 0]>
-
-typedef struct H1 {
- unsigned long a : 1;
- unsigned char : 0;
- unsigned long : 0;
- unsigned long c : 1;
-} H1;
-
-// CHECK: Type: struct H1
-// CHECK: Size:64
-// CHECK: Alignment:8
-// CHECK: FieldOffsets: [0, 32, 32, 32]>
-
-typedef struct I1 {
- short : 8;
- __declspec(align(16)) short : 8;
-} I1;
-
-// CHECK: Type: struct I1
-// CHECK: Size:16
-// CHECK: Alignment:8
-// CHECK: FieldOffsets: [0, 8]
-
-#pragma pack(pop)
-
-int x[
-sizeof(A ) +
-sizeof(B ) +
-sizeof(C ) +
-sizeof(D ) +
-sizeof(E ) +
-sizeof(F ) +
-sizeof(G ) +
-sizeof(H ) +
-sizeof(I ) +
-sizeof(A1) +
-sizeof(B1) +
-sizeof(C1) +
-sizeof(D1) +
-sizeof(E1) +
-sizeof(F1) +
-sizeof(G1) +
-sizeof(H1) +
-sizeof(I1) +
-0];
+// RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple i686-pc-win32 -fms-extensions -fdump-record-layouts %s 2>/dev/null \ +// RUN: | FileCheck %s +// RUN: %clang_cc1 -fno-rtti -emit-llvm-only -triple x86_64-pc-win32 -fms-extensions -fdump-record-layouts %s 2>/dev/null \ +// RUN: | FileCheck %s + +typedef struct A { + char x; + int a : 22; + int : 0; + int c : 10; + char b : 3; + char d: 4; + short y; +} A; + +// CHECK: Type: struct A +// CHECK: Size:128 +// CHECK: Alignment:32 +// CHECK: FieldOffsets: [0, 32, 64, 64, 96, 99, 112]> + +typedef struct B { + char x; + int : 0; + short a : 4; + char y; +} B; + +// CHECK: Type: struct B +// CHECK: Size:48 +// CHECK: Alignment:16 +// CHECK: FieldOffsets: [0, 8, 16, 32]> + +typedef struct C { + char x; + short a : 4; + int : 0; + char y; +} C; + +// CHECK: Type: struct C +// CHECK: Size:64 +// CHECK: Alignment:32 +// CHECK: FieldOffsets: [0, 16, 32, 32]> + +typedef struct D { + char x; + short : 0; + int : 0; + char y; +} D; + +// CHECK: Type: struct D +// CHECK: Size:16 +// CHECK: Alignment:8 +// CHECK: FieldOffsets: [0, 8, 8, 8]> + +typedef union E { + char x; + long long a : 3; + int b : 3; + long long : 0; + short y; +} E; + +// CHECK: Type: union E +// CHECK: Size:64 +// CHECK: Alignment:16 +// CHECK: FieldOffsets: [0, 0, 0, 0, 0]> + +typedef struct F { + char x; + char a : 3; + char b : 3; + char c : 3; + short d : 6; + short e : 6; + short f : 6; + short g : 11; + short h : 11; + short i : 11; + short y; +} F; + +// CHECK: Type: struct F +// CHECK: Size:128 +// CHECK: Alignment:16 +// CHECK: FieldOffsets: [0, 8, 11, 16, 32, 38, 48, 64, 80, 96, 112]> + +typedef union G { + char x; + int a : 3; + int : 0; + long long : 0; + short y; +} G; + +// CHECK: Type: union G +// CHECK: Size:32 +// CHECK: Alignment:16 +// CHECK: FieldOffsets: [0, 0, 0, 0, 0]> + +typedef struct H { + unsigned short a : 1; + unsigned char : 0; + unsigned long : 0; + unsigned short c : 1; +} H; + +// CHECK: Type: struct H +// CHECK: Size:32 +// CHECK: Alignment:16 +// CHECK: FieldOffsets: [0, 16, 16, 16]> + +typedef struct I { + short : 8; + __declspec(align(16)) short : 8; +} I; + +// CHECK: Type: struct I +// CHECK: Size:16 +// CHECK: Alignment:16 +// CHECK: FieldOffsets: [0, 8] + +#pragma pack(push, 1) + +typedef struct A1 { + char x; + int a : 22; + int : 0; + int c : 10; + char b : 3; + char d: 4; + short y; +} A1; + +// CHECK: Type: struct A1 +// CHECK: Size:96 +// CHECK: Alignment:8 +// CHECK: FieldOffsets: [0, 8, 40, 40, 72, 75, 80]> + +typedef struct B1 { + char x; + int : 0; + short a : 4; + char y; +} B1; + +// CHECK: Type: struct B1 +// CHECK: Size:32 +// CHECK: Alignment:8 +// CHECK: FieldOffsets: [0, 8, 8, 24]> + +typedef struct C1 { + char x; + short a : 4; + int : 0; + char y; +} C1; + +// CHECK: Type: struct C1 +// CHECK: Size:32 +// CHECK: Alignment:8 +// CHECK: FieldOffsets: [0, 8, 24, 24]> + +typedef struct D1 { + char x; + short : 0; + int : 0; + char y; +} D1; + +// CHECK: Type: struct D1 +// CHECK: Size:16 +// CHECK: Alignment:8 +// CHECK: FieldOffsets: [0, 8, 8, 8]> + +typedef union E1 { + char x; + long long a : 3; + int b : 3; + long long : 0; + short y; +} E1; + +// CHECK: Type: union E1 +// CHECK: Size:64 +// CHECK: Alignment:8 +// CHECK: FieldOffsets: [0, 0, 0, 0, 0]> + +typedef struct F1 { + char x; + char a : 3; + char b : 3; + char c : 3; + short d : 6; + short e : 6; + short f : 6; + short g : 11; + short h : 11; + short i : 11; + short y; +} F1; + +// CHECK: Type: struct F1 +// CHECK: Size:120 +// CHECK: Alignment:8 +// CHECK: FieldOffsets: [0, 8, 11, 16, 24, 30, 40, 56, 72, 88, 104]> + +typedef union G1 { + char x; + int a : 3; + int : 0; + long long : 0; + short y; +} G1; + +// CHECK: Type: union G1 +// CHECK: Size:32 +// CHECK: Alignment:8 +// CHECK: FieldOffsets: [0, 0, 0, 0, 0]> + +typedef struct H1 { + unsigned long a : 1; + unsigned char : 0; + unsigned long : 0; + unsigned long c : 1; +} H1; + +// CHECK: Type: struct H1 +// CHECK: Size:64 +// CHECK: Alignment:8 +// CHECK: FieldOffsets: [0, 32, 32, 32]> + +typedef struct I1 { + short : 8; + __declspec(align(16)) short : 8; +} I1; + +// CHECK: Type: struct I1 +// CHECK: Size:16 +// CHECK: Alignment:8 +// CHECK: FieldOffsets: [0, 8] + +#pragma pack(pop) + +int x[ +sizeof(A ) + +sizeof(B ) + +sizeof(C ) + +sizeof(D ) + +sizeof(E ) + +sizeof(F ) + +sizeof(G ) + +sizeof(H ) + +sizeof(I ) + +sizeof(A1) + +sizeof(B1) + +sizeof(C1) + +sizeof(D1) + +sizeof(E1) + +sizeof(F1) + +sizeof(G1) + +sizeof(H1) + +sizeof(I1) + +0]; |