diff options
Diffstat (limited to 'tests/auto/qml/qmlcppcodegen/data/conversionInDeadCode.qml')
-rw-r--r-- | tests/auto/qml/qmlcppcodegen/data/conversionInDeadCode.qml | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/auto/qml/qmlcppcodegen/data/conversionInDeadCode.qml b/tests/auto/qml/qmlcppcodegen/data/conversionInDeadCode.qml new file mode 100644 index 0000000000..b2e7b40c00 --- /dev/null +++ b/tests/auto/qml/qmlcppcodegen/data/conversionInDeadCode.qml @@ -0,0 +1,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); +} |