File: anonymous_comp_init.i

package info (click to toggle)
frama-c 20220511-manganese-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 66,472 kB
  • sloc: ml: 278,832; ansic: 47,093; sh: 4,823; makefile: 3,618; javascript: 2,436; python: 1,919; perl: 897; lisp: 293; xml: 62
file content (70 lines) | stat: -rw-r--r-- 899 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*run.config
  STDOPT: #"-c11"
*/

typedef struct {
  int f1;
  struct {
    int f2;
  };
  int f3;
} s1;

typedef struct {
  union {
    struct {
      unsigned f1: 1;
      unsigned f2: 1;
      unsigned f3: 1;
    unsigned : 10;
      unsigned f5: 1;
    unsigned : 6;
    };
    unsigned i;
  };
  unsigned j;
} s2;

typedef struct {
   union {
      int a;
      long b;
   };
} s3;

s1 g1 = {
  .f1 = 1,
  .f3 = 3
};

s2 g2 = {
  .f1 = 1,
  .f2 = 1,
  .f3 = 0,
  .f5 = 1,
  .j = 0
};

s2 g3 = {
  .f3 = 1,
  2,
  .f1 = 3,
  4
};

s2 g4 = { { { .f1 = 0 } } };
s2 g5 = { 1, 2, 3, 4, 5 };
s2 g6 = { { 1, 2, 3, 4}, 5 };

/* According to the braces, the 5 correspond to i instead of j, which cause the
   5 to be ignored (too many elements in union) while j has no special value
   (initialized to 0) */
s2 g7 = { { { {1}, 2, 3, 4}, 5} };

s3 g8 = { { .a = 0 } };

int main() {
  return g2.f5;
}