gcc version 13.2.0 (Ubuntu 13.2.0-23ubuntu4) seems to remove some code in release builds that is embedded in a macro in qtransfrom.cpp. This patch changes the macro into a function such that it is not removed by gcc. It seems like the switch statement is (wrongly) optimized away if it is embedded in the QTransform::map(QPolygonF) overload. nx and ny are always 0 (as initialized by QPolygonF) after the macro (but only within the QTransform::map(QPolygonF) function. The bug happens only in a release build. Added debug messages of nx and ny created no output, adding qDebug() << t, which made the macro work. It seems that a complex combination of macro and switch statement can tigger the bug in gcc. So rewriting the macro as a function works around the bug. Fixes: QTBUG-127723 Change-Id: I7e0b02cde276e591cf773f4e18dd505134421957 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit 11b70b66de627d3bd0ef4193d5cfa624c88ac96a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> |
||
|---|---|---|
| .. | ||
| image | ||
| itemmodels | ||
| kernel | ||
| math3d | ||
| painting | ||
| platform | ||
| qopengl | ||
| qopenglconfig | ||
| qvulkan | ||
| rhi | ||
| text | ||
| util | ||
| CMakeLists.txt | ||