mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 06:46:07 +00:00

With xlc and xlC pragma align(packed) will pack bitfields the same way as pragma align(bit_packed). xlclang, xlclang++ and clang will pack bitfields the same way as pragma pack(1). Issue a warning when source code using pragma align(packed) is used to alert the user it may not be compatable with xlc/xlC. Differential Revision: https://reviews.llvm.org/D107506
32 lines
682 B
C
32 lines
682 B
C
// RUN: %clang_cc1 -triple powerpc64-ibm-aix-xcoff -fxl-pragma-pack -verify -fsyntax-only %s
|
|
// RUN: %clang_cc1 -triple powerpc-ibm-aix-xcoff -fxl-pragma-pack -verify -fsyntax-only %s
|
|
|
|
#pragma align(packed)
|
|
struct A { // expected-warning {{#pragma align(packed) may not be compatible with objects generated with AIX XL C/C++}}
|
|
short s1;
|
|
int : 0;
|
|
short s2;
|
|
};
|
|
|
|
struct B { // expected-warning {{#pragma align(packed) may not be compatible with objects generated with AIX XL C/C++}}
|
|
short a : 8;
|
|
short b : 8;
|
|
int c;
|
|
};
|
|
|
|
struct C {
|
|
int x, y, z;
|
|
};
|
|
|
|
struct D {
|
|
double d;
|
|
struct A a;
|
|
};
|
|
#pragma align(reset)
|
|
|
|
struct E {
|
|
int a : 28;
|
|
int : 0;
|
|
int b : 16;
|
|
};
|