aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qmlcppcodegen/data/conversionInDeadCode.qml
blob: b2e7b40c0059153ed0ae07a79b0770946cd9d748 (plain)
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);
}