mirror of https://github.com/microsoft/clang.git
Prune CRLF.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220678 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
be6e76b7cc
commit
c6660a2c03
|
@ -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());
|
||||
|
|
|
@ -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"}
|
||||
|
|
|
@ -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)*
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)));
|
||||
// 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)));
|
||||
|
|
|
@ -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)));
|
||||
|
|
|
@ -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}}
|
||||
|
|
|
@ -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];
|
||||
|
|
Loading…
Reference in New Issue