diff options
| author | Alex Lorenz <arphaman@gmail.com> | 2017-03-31 15:36:21 +0000 |
|---|---|---|
| committer | Alex Lorenz <arphaman@gmail.com> | 2017-03-31 15:36:21 +0000 |
| commit | 7d7e1e0218a06bcb2568e19bc53589c670dc3018 (patch) | |
| tree | fcd2fc850b4a9c59d791a239eb14e3842c7cbf2e /clang/test/PCH/pragma-pack.c | |
| parent | 5808011bd9f9b61b93cfe82953e5a03852a86aae (diff) | |
| download | bcm5719-llvm-7d7e1e0218a06bcb2568e19bc53589c670dc3018.tar.gz bcm5719-llvm-7d7e1e0218a06bcb2568e19bc53589c670dc3018.zip | |
[Modules][PCH] Serialize #pragma pack
This patch serializes the state of #pragma pack. It preserves the state of the
pragma from a PCH/from modules in a file that uses that PCH/those modules.
rdar://21359084
Differential Revision: https://reviews.llvm.org/D31241
llvm-svn: 299226
Diffstat (limited to 'clang/test/PCH/pragma-pack.c')
| -rw-r--r-- | clang/test/PCH/pragma-pack.c | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/clang/test/PCH/pragma-pack.c b/clang/test/PCH/pragma-pack.c new file mode 100644 index 00000000000..47a55700235 --- /dev/null +++ b/clang/test/PCH/pragma-pack.c @@ -0,0 +1,90 @@ +// Test this without pch. +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -DSET +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -DRESET +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -DPUSH +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -DPUSH_POP +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -include %s -verify -fsyntax-only -DPUSH_POP_LABEL + +// Test with pch. +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DSET -emit-pch -o %t +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DSET -verify -include-pch %t +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DRESET -emit-pch -o %t +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DRESET -verify -include-pch %t +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DPUSH -emit-pch -o %t +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DPUSH -verify -include-pch %t +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DPUSH_POP -emit-pch -o %t +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DPUSH_POP -verify -include-pch %t +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DPUSH_POP_LABEL -emit-pch -o %t +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -DPUSH_POP_LABEL -verify -include-pch %t + +#ifndef HEADER +#define HEADER + +#ifdef SET +#pragma pack(1) +#endif + +#ifdef RESET +#pragma pack(2) +#pragma pack () +#endif + +#ifdef PUSH +#pragma pack(1) +#pragma pack (push, 2) +#endif + +#ifdef PUSH_POP +#pragma pack (push, 4) +#pragma pack (push, 2) +#pragma pack (pop) +#endif + +#ifdef PUSH_POP_LABEL +#pragma pack (push, a, 4) +#pragma pack (push, b, 1) +#pragma pack (push, c, 2) +#pragma pack (pop, b) +#endif + +#else + +#ifdef SET +#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 1}} +#pragma pack(pop) // expected-warning {{#pragma pack(pop, ...) failed: stack empty}} +#endif + +#ifdef RESET +#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}} +#pragma () +#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}} +#endif + +#ifdef PUSH +#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 2}} +#pragma pack(pop) +#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 1}} +#pragma pack () +#pragma pack (show) // expected-warning {{value of #pragma pack(show) == 8}} +#pragma pack(pop) // expected-warning {{#pragma pack(pop, ...) failed: stack empty}} +#endif + +#ifdef PUSH_POP +#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 4}} +#pragma pack(pop) +#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}} +#pragma pack(pop) // expected-warning {{#pragma pack(pop, ...) failed: stack empty}} +#endif + +#ifdef PUSH_POP_LABEL +#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 4}} +#pragma pack(pop, c) +#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 4}} +#pragma pack(pop, a) +#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}} +#pragma pack(pop) // expected-warning {{#pragma pack(pop, ...) failed: stack empty}} +#pragma pack(pop, b) // expected-warning {{#pragma pack(pop, ...) failed: stack empty}} +#pragma pack(show) // expected-warning {{value of #pragma pack(show) == 8}} +#endif + +#endif |

