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
|
pragma Strict
import QtQml
QtObject {
// This does not look like dead code, but each access to 'result' generates a
// DeadTemoralZoneCheck instruction that we ignore when compiling to C++
// after checking statically that 'result' is alive throughout the function.
// Therefore, this function is a torture test for the dead code elimination.
function calc(a: int, b: int) : int {
let result = a;
if (b < 0) {
if (b < -1)
result -= b;
if (b < -2)
result /= b;
} else {
if (b > 1)
result *= b;
if (b > 2)
result += b;
}
return result;
}
property int a: calc(10, -3);
property int b: calc(10, -2);
property int c: calc(10, -1);
property int d: calc(10, 0);
property int e: calc(10, 1);
property int f: calc(10, 2);
property int g: calc(10, 3);
}
|