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 71 72 73 74 75
|
/* run.config*
STDOPT: +"-eva-widening-delay 1"
*/
#include "__fc_builtin.h"
int test1(int n)
{
int i = 0;
while (1) {
Frama_C_show_each_1("On exit path", i);
if (i >= n) {
Frama_C_show_each_2("On exit path", i);
return i;
}
Frama_C_show_each_3("Not on exit path", i);
i++;
}
}
int test2(int n)
{
int i = 0;
while (1) {
Frama_C_show_each_4("On exit path", i);
int j = 0;
while (1) {
Frama_C_show_each_5("On exit path", i, j);
if (j >= n) {
Frama_C_show_each_6("Not on exit path", i, j);
break;
}
if (i + j >= 2 * n) {
Frama_C_show_each_7("On exit path", i, j);
return i;
}
Frama_C_show_each_8("Not on exit path", i, j);
j++;
}
Frama_C_show_each_9("Not on exit path", i);
i++;
}
}
int test3(int n)
{
int i = 0;
while (1) {
Frama_C_show_each_10("On exit path", i);
int j = 0;
while (1) {
Frama_C_show_each_11("On exit path", i, j);
if (j >= n) {
Frama_C_show_each_12("On exit path", i, j);
break;
}
Frama_C_show_each_13("On exit path", i, j);
j++;
}
if (i >= n) {
Frama_C_show_each_14("On exit path", i);
return i;
}
Frama_C_show_each_15("Not on exit path", i);
i++;
}
}
void main(void)
{
test1(10);
test2(10);
test3(10);
}
|