Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-133961

msvc LTO: compilation failure related to QSafeQuickItemChangeListener

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P1: Critical
    • None
    • 6.10
    • Quick: Other
    • None
    • Windows
    • e5eda0613 (dev)

    Description

      Configured like this:

      ..\qt6\configure -developer-build -release -ltcg -submodules qtbase,qtdeclarative,qtshadertools -no-pch

      Eventually compilation fails like this:

      FAILED: qtdeclarative/src/quicktemplates/CMakeFiles/QuickTemplates2.dir/qquickactiongroup.cpp.obj
      C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1442~1.344\bin\Hostx64\x64\cl.exe  /nologo /TP -DNOMINMAX -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT -DQT_BUILD_QUICKTEMPLATES2_LIB -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_GUI_LIB -DQT_LEAN_HEADERS=1 -DQT_MOC_COMPAT -DQT_NETWORK_LIB -DQT_NO_AS_CONST=1 -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS -DQT_NO_FOREACH -DQT_NO_FOREACH=1 -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QASCONST -DQT_NO_QEXCHANGE -DQT_NO_QSNPRINTF -DQT_NO_QSNPRINTF=1 -DQT_NO_STD_FORMAT_SUPPORT -DQT_OPENGL_LIB -DQT_QMLINTEGRATION_LIB -DQT_QMLMETA_LIB -DQT_QMLMODELS_LIB -DQT_QMLWORKERSCRIPT_LIB -DQT_QML_LIB -DQT_QUICK_LIB -DQT_STRICT_QLIST_ITERATORS -DQT_USE_QSTRINGBUILDER -DQuickTemplates2_EXPORTS -DUNICODE -DWIN32 -DWIN64 -D_CRT_SECURE_NO_WARNINGS -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_USE_MATH_DEFINES -D_WIN64 -D_WINDLL -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\quicktemplates\QuickTemplates2_autogen\include -IC:\Users\rutledge\dev\qt6-dev\qtbase\include -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQuickTemplates2 -IC:\Users\rutledge\dev\qt6\qtdeclarative\src\quicktemplates -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\quicktemplates -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQuickTemplates2\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQuickTemplates2\6.10.0\QtQuickTemplates2 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQml -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtCore -IC:\Users\rutledge\dev\qt6-dev\qtbase\mkspecs\win32-msvc -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlIntegration -IC:\Users\rutledge\dev\qt6\qtdeclarative\src\qmlintegration -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\qmlintegration -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtNetwork -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtGui -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQuick -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlMeta -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlModels -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlWorkerScript -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtOpenGL -IC:\Users\rutledge\dev\qt6-dev\qtbase\src\corelib -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtCore\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtCore\6.10.0\QtCore -IC:\Users\rutledge\dev\qt6-dev\qtbase\src\gui -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtGui\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtGui\6.10.0\QtGui -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\qml -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQml\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQml\6.10.0\QtQml -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\quick -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQuick\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQuick\6.10.0\QtQuick -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\qmlmodels -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlModels\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlModels\6.10.0\QtQmlModels -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\qmlmeta -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlMeta\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlMeta\6.10.0\QtQmlMeta -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\qmlworkerscript -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlWorkerScript\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlWorkerScript\6.10.0\QtQmlWorkerScript /DWIN32 /D_WINDOWS /DNDEBUG  -O2 -Ob3 -O2 -Ob3 -std:c++17 -MD /GL /W3 /wd5105 -Zc:__cplusplus -permissive- -utf-8 -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:ternary -Zc:externConstexpr -Zc:wchar_t -bigobj -guard:cf -Gw /EHs-c- /wd4530 /wd4577 /showIncludes /Foqtdeclarative\src\quicktemplates\CMakeFiles\QuickTemplates2.dir\qquickactiongroup.cpp.obj /Fdqtdeclarative\src\quicktemplates\CMakeFiles\QuickTemplates2.dir\ /FS -c C:\Users\rutledge\dev\qt6\qtdeclarative\src\quicktemplates\qquickactiongroup.cpp
      C:/Users/rutledge/dev/qt6/qtbase/src/corelib/kernel/qpointer.h(75): error C2440: 'static_cast': cannot convert from 'T *' to 'T *'
              with
              [
                  T=QObject
              ]
              and
              [
                  T=QQuickItem
              ]
      C:/Users/rutledge/dev/qt6/qtbase/src/corelib/kernel/qpointer.h(75): note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or parenthesized function-style cast
      C:/Users/rutledge/dev/qt6/qtbase/src/corelib/kernel/qpointer.h(75): note: the template instantiation context (the oldest one first) is
      C:/Users/rutledge/dev/qt6/qtdeclarative/src/quick/items/qquickitemchangelistener_p.h(144): note: while compiling class template 'QSafeQuickItemChangeListener'
      C:/Users/rutledge/dev/qt6/qtdeclarative/src/quick/items/qquickitemchangelistener_p.h(152): note: see reference to class template instantiation 'QPointer<QQuickItem>' being compiled
      C:/Users/rutledge/dev/qt6/qtbase/src/corelib/kernel/qpointer.h(74): note: while compiling class template member function 'T *QPointer<T>::data(void) noexcept const'
              with
              [
                  T=QQuickItem
              ]
      C:/Users/rutledge/dev/qt6/qtbase/src/corelib/kernel/qpointer.h(83): note: see the first reference to 'QPointer<QQuickItem>::data' in 'QPointer<QQuickItem>::operator T'
              with
              [
                  T=QQuickItem
              ]
      C:/Users/rutledge/dev/qt6/qtdeclarative/src/quick/items/qquickitemchangelistener_p.h(151): note: see the first reference to 'QPointer<QQuickItem>::operator T' in 'QSafeQuickItemChangeListener<QQuickActionPrivate>::~QSafeQuickItemChangeListener'
              with
              [
                  T=QQuickItem
              ]
      [4/3818] Building CXX object qtdeclarative\src\quickwidgets\CMakeFiles\QuickWidgets.dir\qaccessiblequickwidget.cpp.obj
      FAILED: qtdeclarative/src/quickwidgets/CMakeFiles/QuickWidgets.dir/qaccessiblequickwidget.cpp.obj
      C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1442~1.344\bin\Hostx64\x64\cl.exe  /nologo /TP -DNOMINMAX -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT -DQT_BUILD_QUICKWIDGETS_LIB -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_GUI_LIB -DQT_LEAN_HEADERS=1 -DQT_MOC_COMPAT -DQT_NETWORK_LIB -DQT_NO_AS_CONST=1 -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS -DQT_NO_FOREACH -DQT_NO_FOREACH=1 -DQT_NO_INTEGER_EVENT_COORDINATES -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QASCONST -DQT_NO_QEXCHANGE -DQT_NO_QSNPRINTF -DQT_NO_QSNPRINTF=1 -DQT_NO_STD_FORMAT_SUPPORT -DQT_NO_URL_CAST_FROM_STRING -DQT_OPENGL_LIB -DQT_QMLINTEGRATION_LIB -DQT_QMLMETA_LIB -DQT_QMLMODELS_LIB -DQT_QMLWORKERSCRIPT_LIB -DQT_QML_LIB -DQT_QUICK_LIB -DQT_STRICT_QLIST_ITERATORS -DQT_USE_QSTRINGBUILDER -DQT_WIDGETS_LIB -DQuickWidgets_EXPORTS -DUNICODE -DWIN32 -DWIN64 -D_CRT_SECURE_NO_WARNINGS -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_USE_MATH_DEFINES -D_WIN64 -D_WINDLL -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\quickwidgets\QuickWidgets_autogen\include -IC:\Users\rutledge\dev\qt6-dev\qtbase\include -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQuickWidgets -IC:\Users\rutledge\dev\qt6\qtdeclarative\src\quickwidgets -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\quickwidgets -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQuickWidgets\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQuickWidgets\6.10.0\QtQuickWidgets -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtCore -IC:\Users\rutledge\dev\qt6-dev\qtbase\mkspecs\win32-msvc -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtGui -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQml -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlIntegration -IC:\Users\rutledge\dev\qt6\qtdeclarative\src\qmlintegration -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\qmlintegration -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtNetwork -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQuick -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlMeta -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlModels -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlWorkerScript -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtOpenGL -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtWidgets -IC:\Users\rutledge\dev\qt6-dev\qtbase\src\corelib -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtCore\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtCore\6.10.0\QtCore -IC:\Users\rutledge\dev\qt6-dev\qtbase\src\gui -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtGui\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtGui\6.10.0\QtGui -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\qml -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQml\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQml\6.10.0\QtQml -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\quick -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQuick\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQuick\6.10.0\QtQuick -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\qmlmodels -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlModels\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlModels\6.10.0\QtQmlModels -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\qmlmeta -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlMeta\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlMeta\6.10.0\QtQmlMeta -IC:\Users\rutledge\dev\qt6-dev\qtdeclarative\src\qmlworkerscript -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlWorkerScript\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtQmlWorkerScript\6.10.0\QtQmlWorkerScript -IC:\Users\rutledge\dev\qt6-dev\qtbase\src\widgets -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtWidgets\6.10.0 -IC:\Users\rutledge\dev\qt6-dev\qtbase\include\QtWidgets\6.10.0\QtWidgets /DWIN32 /D_WINDOWS /DNDEBUG  -O2 -Ob3 -O2 -Ob3 -std:c++17 -MD /GL /W3 /wd5105 -Zc:__cplusplus -permissive- -utf-8 -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:ternary -Zc:externConstexpr -Zc:wchar_t -bigobj -guard:cf -Gw /EHs-c- /wd4530 /wd4577 /showIncludes /Foqtdeclarative\src\quickwidgets\CMakeFiles\QuickWidgets.dir\qaccessiblequickwidget.cpp.obj /Fdqtdeclarative\src\quickwidgets\CMakeFiles\QuickWidgets.dir\ /FS -c C:\Users\rutledge\dev\qt6\qtdeclarative\src\quickwidgets\qaccessiblequickwidget.cpp
      C:/Users/rutledge/dev/qt6/qtbase/src/corelib/kernel/qpointer.h(75): error C2440: 'static_cast': cannot convert from 'T *' to 'T *'
              with
              [
                  T=QObject
              ]
              and
              [
                  T=QQuickItem
              ]
      C:/Users/rutledge/dev/qt6/qtbase/src/corelib/kernel/qpointer.h(75): note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or parenthesized function-style cast
      C:/Users/rutledge/dev/qt6/qtbase/src/corelib/kernel/qpointer.h(75): note: the template instantiation context (the oldest one first) is
      C:/Users/rutledge/dev/qt6/qtdeclarative/src/quick/items/qquickitemchangelistener_p.h(144): note: while compiling class template 'QSafeQuickItemChangeListener'
      C:/Users/rutledge/dev/qt6/qtdeclarative/src/quick/items/qquickitemchangelistener_p.h(152): note: see reference to class template instantiation 'QPointer<QQuickItem>' being compiled
      C:/Users/rutledge/dev/qt6/qtbase/src/corelib/kernel/qpointer.h(74): note: while compiling class template member function 'T *QPointer<T>::data(void) noexcept const'
              with
              [
                  T=QQuickItem
              ]
      C:/Users/rutledge/dev/qt6/qtbase/src/corelib/kernel/qpointer.h(83): note: see the first reference to 'QPointer<QQuickItem>::data' in 'QPointer<QQuickItem>::operator T'
              with
              [
                  T=QQuickItem
              ]
      C:/Users/rutledge/dev/qt6/qtdeclarative/src/quick/items/qquickitemchangelistener_p.h(151): note: see the first reference to 'QPointer<QQuickItem>::operator T' in 'QSafeQuickItemChangeListener<QQuickWidgetPrivate>::~QSafeQuickItemChangeListener'
              with
              [
                  T=QQuickItem
              ]
      ninja: build stopped: cannot make progress due to previous errors.
      

      Attachments

        Issue Links

          For Gerrit Dashboard: QTBUG-133961
          # Subject Branch Project Status CR V

          Activity

            People

              qt.team.quick.subscriptions Qt Quick and Widgets Team
              srutledg Shawn Rutledge
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:

                Gerrit Reviews

                  There are no open Gerrit changes