1 struct bfu { 2 unsigned int a:11; 3 unsigned int f:9; 4 unsigned int :2; 5 unsigned int z:3; 6 }; 7 8 struct bfu bfuu_init(unsigned int a) 9 { 10 struct bfu bf = { .f = a, }; 11 return bf; 12 } 13 14 struct bfu bfus_init(int a) 15 { 16 struct bfu bf = { .f = a, }; 17 return bf; 18 } 19 20 unsigned int bfu_get0(void) 21 { 22 struct bfu bf = { }; 23 return bf.f; 24 } 25 26 27 struct bfs { 28 signed int a:11; 29 signed int f:9; 30 signed int :2; 31 signed int z:3; 32 }; 33 34 struct bfs bfsu_init(unsigned int a) 35 { 36 struct bfs bf = { .f = a, }; 37 return bf; 38 } 39 40 struct bfs bfss_init(int a) 41 { 42 struct bfs bf = { .f = a, }; 43 return bf; 44 } 45 46 int bfs_get0(void) 47 { 48 struct bfs bf = { }; 49 return bf.f; 50 } 51 52 /* 53 * check-name: bitfield implicit init zero 54 * check-command: test-linearize -Wno-decl $file 55 * 56 * check-output-start 57 bfuu_init: 58 .L0: 59 <entry-point> 60 cast.9 %r2 <- (32) %arg1 61 shl.32 %r4 <- %r2, $11 62 ret.32 %r4 63 64 65 bfus_init: 66 .L2: 67 <entry-point> 68 scast.9 %r10 <- (32) %arg1 69 shl.32 %r12 <- %r10, $11 70 ret.32 %r12 71 72 73 bfu_get0: 74 .L4: 75 <entry-point> 76 ret.32 $0 77 78 79 bfsu_init: 80 .L6: 81 <entry-point> 82 cast.9 %r23 <- (32) %arg1 83 shl.32 %r25 <- %r23, $11 84 ret.32 %r25 85 86 87 bfss_init: 88 .L8: 89 <entry-point> 90 scast.9 %r31 <- (32) %arg1 91 shl.32 %r33 <- %r31, $11 92 ret.32 %r33 93 94 95 bfs_get0: 96 .L10: 97 <entry-point> 98 ret.32 $0 99 100 101 * check-output-end 102 */