llvm-project

Форк
0
/
pragma-pack.c 
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

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.