File: cast_return.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 (66 lines) | stat: -rw-r--r-- 854 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
66
/* run.config*
   STDOPT: +"-val-warn-copy-indeterminate=-@all -print -then -val-warn-copy-indeterminate @all -no-print"
   STDOPT: #"-val-warn-copy-indeterminate=-g,-fl1,-fl2 -print -no-collapse-call-cast"
*/

extern int i;

int f () {
  return i;
}

volatile int c;

int g() {
  int x;
  if (c) x = 1;
  return x;
}

char h() {
  return 1;
}

void main1 () {

  if(c) {float f_ = f();}
  if(c) {long long v = g();}
  if(c) {
    int* x = 0;;
    int **p = &x;
    **p = h();
  }
}

float fl1 () {
  float v;
  *(char*)&v = 1;
  return v;
}

float fl2 () {
  float v;
  if (c) v = 1;
  return v;
}

void main2() {
  double d1;
  double d2;
  if (c) { d1 = fl1(); }
  d2 = fl2();
}

//@ assigns \result \from \nothing;
float ret_float();

void main3() {
  float f1 = ret_float ();
  float f2 = f1 + 1;
}

void main() {
  main1();
  main2();
  main3();
}