llvm-project
90 строк · 3.5 Кб
1// Test this without pch.
2// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DSET
3// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DRESET
4// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DPUSH
5// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DPUSH_POP
6// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -Wno-pragma-pack -DPUSH_POP_LABEL
7
8// Test with pch.
9// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DSET -emit-pch -o %t
10// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DSET -verify -include-pch %t
11// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DRESET -emit-pch -o %t
12// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DRESET -verify -include-pch %t
13// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH -emit-pch -o %t
14// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH -verify -include-pch %t
15// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH_POP -emit-pch -o %t
16// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH_POP -verify -include-pch %t
17// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH_POP_LABEL -emit-pch -o %t
18// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -Wno-pragma-pack -DPUSH_POP_LABEL -verify -include-pch %t
19
20#ifndef HEADER
21#define HEADER
22
23#ifdef SET
24#pragma pack(1)
25#endif
26
27#ifdef RESET
28#pragma pack(2)
29#pragma pack ()
30#endif
31
32#ifdef PUSH
33#pragma pack(1)
34#pragma pack (push, 2)
35#endif
36
37#ifdef PUSH_POP
38#pragma pack (push, 4)
39#pragma pack (push, 2)
40#pragma pack (pop)
41#endif
42
43#ifdef PUSH_POP_LABEL
44#pragma pack (push, a, 4)
45#pragma pack (push, b, 1)
46#pragma pack (push, c, 2)
47#pragma pack (pop, b)
48#endif
49
50#else
51
52#ifdef SET
53#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 1}}
54#pragma pack(pop) // expected-warning {{#pragma pack(pop, ...) failed: stack empty}}
55#endif
56
57#ifdef RESET
58#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}}
59#pragma ()
60#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}}
61#endif
62
63#ifdef PUSH
64#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 2}}
65#pragma pack(pop)
66#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 1}}
67#pragma pack ()
68#pragma pack (show) // expected-warning {{value of #pragma pack(show) == 8}}
69#pragma pack(pop) // expected-warning {{#pragma pack(pop, ...) failed: stack empty}}
70#endif
71
72#ifdef PUSH_POP
73#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 4}}
74#pragma pack(pop)
75#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}}
76#pragma pack(pop) // expected-warning {{#pragma pack(pop, ...) failed: stack empty}}
77#endif
78
79#ifdef PUSH_POP_LABEL
80#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 4}}
81#pragma pack(pop, c)
82#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 4}}
83#pragma pack(pop, a)
84#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}}
85#pragma pack(pop) // expected-warning {{#pragma pack(pop, ...) failed: stack empty}}
86#pragma pack(pop, b) // expected-warning {{#pragma pack(pop, ...) failed: stack empty}}
87#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}}
88#endif
89
90#endif
91