1// bindgen-flags: --raw-line '#![cfg(feature = "nightly")]' --rust-target 1.33
2
3/// This should not be opaque; we can see the attributes and can pack the
4/// struct.
5struct AlignedToOne {
6    int i;
7} __attribute__ ((packed,aligned(1)));
8
9/// This should be be packed because Rust 1.33 has `#[repr(packed(N))]`.
10struct AlignedToTwo {
11    int i;
12} __attribute__ ((packed,aligned(2)));
13
14#pragma pack(1)
15
16/// This should not be opaque because although `libclang` doesn't give us the
17/// `#pragma pack(1)`, we can detect that alignment is 1 and add
18/// `#[repr(packed)]` to the struct ourselves.
19struct PackedToOne {
20    int x;
21    int y;
22};
23
24#pragma pack()
25
26#pragma pack(2)
27
28/// This should be be packed because Rust 1.33 has `#[repr(packed(N))]`.
29struct PackedToTwo {
30    int x;
31    int y;
32};
33
34#pragma pack()
35