1 /* { dg-do compile } */
2 /* { dg-options "-O0 -dA -gbtf -mco-re" } */
3
4 enum {
5 FIELD_SIGNEDNESS = 3,
6 };
7
8 enum Esig {
9 SA = -1,
10 SB,
11 SC,
12 };
13
14 enum Eun {
15 UA = 0,
16 UB,
17 };
18
19 struct S {
20 enum Esig sig : 3;
21 enum Eun un : 3;
22 };
23
24 union U {
25 int i;
26 struct S s;
27 };
28
29 unsigned int foo (union U *u)
30 {
31 unsigned i = __builtin_preserve_field_info (u->i, FIELD_SIGNEDNESS);
32 unsigned sig = __builtin_preserve_field_info (u->s.sig, FIELD_SIGNEDNESS);
33 unsigned un = __builtin_preserve_field_info (u->s.un, FIELD_SIGNEDNESS);
34
35 return i + sig + un;
36 }
37
38 /* { dg-final { scan-assembler-times "\[\t \]mov\[\t \]%r\[0-9\],1" 2 } } */
39 /* { dg-final { scan-assembler-times "\[\t \]mov\[\t \]%r\[0-9\],0" 1 } } */
40
41 /* { dg-final { scan-assembler-times "ascii \"0:0.0\"\[\t \]+\[^\n\]*btf_aux_string" 1 } } */
42 /* { dg-final { scan-assembler-times "ascii \"0:1:0.0\"\[\t \]+\[^\n\]*btf_aux_string" 1 } } */
43 /* { dg-final { scan-assembler-times "ascii \"0:1:1.0\"\[\t \]+\[^\n\]*btf_aux_string" 1 } } */
44
45 /* { dg-final { scan-assembler-times "3\[\t \]+\[^\n\]*bpfcr_kind" 3 } } */