aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quickcontrols/qquickapplicationwindow/tst_qquickapplicationwindow.cpp
diff options
context:
space:
mode:
authorUlf Hermann <[email protected]>2025-10-30 10:15:15 +0100
committerUlf Hermann <[email protected]>2025-10-31 12:29:24 +0100
commitc7d5375714f5dc706416ea62375092f5c1214422 (patch)
tree1f6c47a34ad6adc7df6d6a0d1b97b5016301a8ea /tests/auto/quickcontrols/qquickapplicationwindow/tst_qquickapplicationwindow.cpp
parent27f66343163b6d565c93f3969459d350da812d13 (diff)
QmlCompiler: Fix side effect detection for callsHEADdev
We cannot pass registers that are potentially affected by side effect as arguments to calls. For this to work, we need to sharpen the side effect detection some more. 1. A conversion is always "var" which can be affected by side effects. However, the actual question is whether one of the conversion origins can be affected by side effects. A conversion of "int" and "undefined", for example, can certainly not be affected. 2. When determining side effects we need to look at the original types, not the adjusted ones. Adjusted types are often "var" because we need to pass a value as "var" to some function. That doesn't mean the value can be affected by side effects, though. 3. When generating the write-back, we should first check if it's necessary at all before looking for side effects. Furthermore, we need to slightly adjust the deltablue benchmark since two values were potentially affected by side effects. The walkStrength may be shadowed by a type with internal structure. Only at the call site of the weaker() and stronger() functions it would then be collapsed into int. However, those function calls might change the original walkStrength, thereby producing a side effect for further calls. We can exclude this effect by collapsing to Number right away using the '+' operator. Finally, we need to make the initialization of the Categorizer benchmark non-Strict. The loop that writes into an array of type unknown until the return statement while calling a function on every iteration is obviously affected by side effects. However, the meat of the benchmark is actually not the initialization. So that should be fine. Pick-to: 6.10 6.8 Fixes: QTBUG-141420 Change-Id: Iad47eddcf0afaa4e502f1d151cf383a6fd23f5ba Reviewed-by: Olivier De Cannière <[email protected]> Reviewed-by: Sami Shalayel <[email protected]>
Diffstat (limited to 'tests/auto/quickcontrols/qquickapplicationwindow/tst_qquickapplicationwindow.cpp')
0 files changed, 0 insertions, 0 deletions