File: bts383.c

package info (click to toggle)
frama-c 20161101%2Bsilicon%2Bdfsg-5
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 42,324 kB
  • ctags: 35,695
  • sloc: ml: 200,142; ansic: 31,465; makefile: 2,334; sh: 1,643; lisp: 259; python: 85; asm: 26
file content (65 lines) | stat: -rw-r--r-- 1,078 bytes parent folder | download | duplicates (2)
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
/* run.config
   OPT: -val -print -journal-disable -scope-verbose 1 -remove-redundant-alarms -context-width 3
*/
/* 
   echo '!Db.Scope.check_asserts();;' \
   | bin/toplevel.top -val tests/scope/bts383.c 
*/
int v;
void if1 (int * p) {
  if (*p > 0) 
    v = *p;
}
int if2 (int c, int * p) {
  if (c)
    v = *p;
  return *p;
}
void loop1 (int * p) {
  int i;
  int n = *p;
  for (i = 0; i < n; i++) {
    v = *p;
  }
}
int loop2 (int n, int * p) {
  int i;
  for (i = 0; i < n; i++) {
    v = *p;
  }
  return *p;
}
void out_char (char c);
void out_string (const char *value)
{
  for(; *value; value++)
    out_char(*value);
}
typedef struct { int a; int b; } Tstruct;
int fstruct (Tstruct * ps) {
  int x;
  ps->a = 3;
  ps->b = 5;
  ps->a = ps->b;
  ps->b = ps->a;
  x = ps->a + ps->b;
  ps++;
  ps->a = 3;
  ps->b = 5;
  ps->a = ps->b;
  ps->b = ps->a;
  x += ps->a + ps->b;
  return x;
}
int main (int * p, Tstruct * ps) {
  int x;
  x = *(p+1);
  v = *(p+1);
  if1(p+1);
  if2(x,p+1);
  loop1(p+1);
  loop2(x,p+1);
  out_string(p+1);
  x += fstruct (ps+1);
  return x;
}