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
|
[kernel] Parsing unroll_visit.i (no preprocessing)
[eva] Analyzing a complete application starting at main
[eva] Computing initial state
[eva] Initial state computed
[eva:initial-state] Values of globals at initialization
[eva] unroll_visit.i:12: assertion got status valid.
[eva] unroll_visit.i:10: starting to merge loop iterations
[eva] Recording results for main
[eva] done for function main
[eva] ====== VALUES COMPUTED ======
[eva:final-states] Values at end of function main:
i ∈ {100}
[from] Computing for function main
[from] Done for function main
[from] ====== DEPENDENCIES COMPUTED ======
These dependencies hold at termination for the executions that terminate:
[from] Function main:
NO EFFECTS
[from] ====== END OF DEPENDENCIES ======
[inout] Out (internal) for function main:
i
[inout] Inputs for function main:
\nothing
/* Generated by Frama-C */
typedef char i8;
void main(void)
{
i8 i = (i8)0;
if (! ((int)i < 100)) goto unrolling_2_loop;
i = (i8)((int)i - 1);
/*@ assert i < 100; */ ;
i = (i8)((int)i + 1);
i = (i8)((int)i + 1);
unrolling_4_loop: ;
if (! ((int)i < 100)) goto unrolling_2_loop;
i = (i8)((int)i - 1);
/*@ assert i < 100; */ ;
i = (i8)((int)i + 1);
i = (i8)((int)i + 1);
unrolling_3_loop: ;
/*@ loop pragma UNROLL 2;
loop pragma UNROLL "done", 2; */
while ((int)i < 100) {
i = (i8)((int)i - 1);
/*@ assert i < 100; */ ;
i = (i8)((int)i + 1);
i = (i8)((int)i + 1);
}
unrolling_2_loop: ;
return;
}
|