File: conversionInDeadCode.qml

package info (click to toggle)
qt6-declarative 6.9.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 308,920 kB
  • sloc: cpp: 775,911; javascript: 514,247; xml: 10,855; python: 2,806; ansic: 2,253; java: 810; sh: 262; makefile: 41; php: 27
file content (32 lines) | stat: -rw-r--r-- 950 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
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);
}