Message ID | 20250723223914.23733-1-laurent.pinchart@ideasonboard.com |
---|---|
State | New |
Headers | show |
Series |
|
Related | show |
On Thu, Jul 24, 2025 at 01:39:14AM +0300, Laurent Pinchart wrote: > In Qt 6.9.0 the qtmochelpers.h header introduced a construct that gcc 12 > and gcc 13 incorrectly flag as variable shadowing: > > In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:12: > /usr/include/qt6/QtCore/qtmochelpers.h: In instantiation of ‘constexpr void QtMocHelpers::detail::UintDataStorage<std::integer_sequence<int, Idx ...>, T ...>::forEach(F&&) const [with F = QtMocHelpers::UintData<QtMocHelpers::SignalData<void(libcamera::FrameBuffer*)> >::copyTo<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t, QtMocHelpers::MetaObjectContents<24, 10, 60, 3> >(QtMocHelpers::MetaObjectContents<24, 10, 60, 3>&, size_t, uint&) const::<lambda(const auto:39&)>; int ...Idx = {0}; T = {QtMocHelpers::SignalData<void(libcamera::FrameBuffer*)>}]’: > /usr/include/qt6/QtCore/qtmochelpers.h:255:21: required from ‘constexpr const QtMocHelpers::MetaObjectContents<24, 10, 60, 3> ViewFinderGL::qt_staticMetaObjectContent<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t>’ > src/apps/qcam/qcam.p/../../../../../../src/apps/qcam/viewfinder_gl.h:32:2: required from ‘constexpr const auto ViewFinderGL::qt_staticMetaObjectStaticContent<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t>’ > src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:63:5: required from here > src/apps/qcam/qcam.p/../../../../../../src/apps/qcam/viewfinder_gl.h:32:2: in ‘constexpr’ expansion of ‘ViewFinderGL::qt_create_metaobjectdata<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t>()’ > src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:58:87: in ‘constexpr’ expansion of ‘QtMocHelpers::metaObjectData<ViewFinderGL, {anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t, StringRefStorage<char [13], char [15], char [1], char [24], char [7]>, UintData<SignalData<void(libcamera::FrameBuffer*)> >, UintData<>, UintData<> >(0, qt_stringData, qt_methods, qt_properties, qt_enums, QtMocHelpers::UintData<>(), const QtMocHelpers::detail::UintDataBlock<0, 0>{uint [1](), uint [1]()})’ > /usr/include/qt6/QtCore/qtmochelpers.h:563:36: in ‘constexpr’ expansion of ‘(& methods)->QtMocHelpers::UintData<QtMocHelpers::SignalData<void(libcamera::FrameBuffer*)> >::copyTo<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t, QtMocHelpers::MetaObjectContents<24, 10, 60, 3> >(result, ((size_t)dataoffset), metatypeoffset)’ > /usr/include/qt6/QtCore/qtmochelpers.h:201:57: error: declaration of ‘entry’ shadows a member of ‘QtMocHelpers::detail::UintDataStorage<std::integer_sequence<int, 0>, QtMocHelpers::SignalData<void(libcamera::FrameBuffer*)> >’ [-Werror=shadow] > 201 | [[maybe_unused]] auto invoke = [&f](const auto &entry) { f(entry.entry); return 0; }; > | ~~~~~~~~~~~~^~~~~ > /usr/include/qt6/QtCore/qtmochelpers.h:180:7: note: shadowed declaration is here > 180 | T entry; > | ^~~~~ > Yes, this seems really awkward. :-( > There is little we can do but silence the warning. Do so selectively > based on the Qt and gcc versions, to still detect variable shadowing > with compilers unaffected by the issue. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Umang Jain <uajain@igalia.com> > --- > src/apps/qcam/meson.build | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/src/apps/qcam/meson.build b/src/apps/qcam/meson.build > index f7c140643373..9ca047b0f927 100644 > --- a/src/apps/qcam/meson.build > +++ b/src/apps/qcam/meson.build > @@ -42,6 +42,13 @@ qt6_cpp_args = [ > '-Wno-extra-semi', > ] > > +# gcc 12 and 13 output a false positive variable shadowing warning with Qt > +# 6.9.0 and newer. Silence it. > +if qt6_dep.version().version_compare('>=6.9.0') and \ > + cxx.version().version_compare('>=12') and cxx.version().version_compare('<14') > + qt6_cpp_args += ['-Wno-shadow'] > +endif > + > resources = qt6.preprocess(moc_headers : qcam_moc_headers, > qresources : qcam_resources, > dependencies : qt6_dep) > > base-commit: b65df7e7554b45e2d3d7fdb5b37c2ab7df3db4fe > -- > Regards, > > Laurent Pinchart >
Quoting Laurent Pinchart (2025-07-24 07:39:14) > In Qt 6.9.0 the qtmochelpers.h header introduced a construct that gcc 12 > and gcc 13 incorrectly flag as variable shadowing: > > In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:12: > /usr/include/qt6/QtCore/qtmochelpers.h: In instantiation of ‘constexpr void QtMocHelpers::detail::UintDataStorage<std::integer_sequence<int, Idx ...>, T ...>::forEach(F&&) const [with F = QtMocHelpers::UintData<QtMocHelpers::SignalData<void(libcamera::FrameBuffer*)> >::copyTo<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t, QtMocHelpers::MetaObjectContents<24, 10, 60, 3> >(QtMocHelpers::MetaObjectContents<24, 10, 60, 3>&, size_t, uint&) const::<lambda(const auto:39&)>; int ...Idx = {0}; T = {QtMocHelpers::SignalData<void(libcamera::FrameBuffer*)>}]’: > /usr/include/qt6/QtCore/qtmochelpers.h:255:21: required from ‘constexpr const QtMocHelpers::MetaObjectContents<24, 10, 60, 3> ViewFinderGL::qt_staticMetaObjectContent<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t>’ > src/apps/qcam/qcam.p/../../../../../../src/apps/qcam/viewfinder_gl.h:32:2: required from ‘constexpr const auto ViewFinderGL::qt_staticMetaObjectStaticContent<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t>’ > src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:63:5: required from here > src/apps/qcam/qcam.p/../../../../../../src/apps/qcam/viewfinder_gl.h:32:2: in ‘constexpr’ expansion of ‘ViewFinderGL::qt_create_metaobjectdata<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t>()’ > src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:58:87: in ‘constexpr’ expansion of ‘QtMocHelpers::metaObjectData<ViewFinderGL, {anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t, StringRefStorage<char [13], char [15], char [1], char [24], char [7]>, UintData<SignalData<void(libcamera::FrameBuffer*)> >, UintData<>, UintData<> >(0, qt_stringData, qt_methods, qt_properties, qt_enums, QtMocHelpers::UintData<>(), const QtMocHelpers::detail::UintDataBlock<0, 0>{uint [1](), uint [1]()})’ > /usr/include/qt6/QtCore/qtmochelpers.h:563:36: in ‘constexpr’ expansion of ‘(& methods)->QtMocHelpers::UintData<QtMocHelpers::SignalData<void(libcamera::FrameBuffer*)> >::copyTo<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t, QtMocHelpers::MetaObjectContents<24, 10, 60, 3> >(result, ((size_t)dataoffset), metatypeoffset)’ > /usr/include/qt6/QtCore/qtmochelpers.h:201:57: error: declaration of ‘entry’ shadows a member of ‘QtMocHelpers::detail::UintDataStorage<std::integer_sequence<int, 0>, QtMocHelpers::SignalData<void(libcamera::FrameBuffer*)> >’ [-Werror=shadow] > 201 | [[maybe_unused]] auto invoke = [&f](const auto &entry) { f(entry.entry); return 0; }; > | ~~~~~~~~~~~~^~~~~ > /usr/include/qt6/QtCore/qtmochelpers.h:180:7: note: shadowed declaration is here > 180 | T entry; > | ^~~~~ > > There is little we can do but silence the warning. Do so selectively > based on the Qt and gcc versions, to still detect variable shadowing > with compilers unaffected by the issue. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> > --- > src/apps/qcam/meson.build | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/src/apps/qcam/meson.build b/src/apps/qcam/meson.build > index f7c140643373..9ca047b0f927 100644 > --- a/src/apps/qcam/meson.build > +++ b/src/apps/qcam/meson.build > @@ -42,6 +42,13 @@ qt6_cpp_args = [ > '-Wno-extra-semi', > ] > > +# gcc 12 and 13 output a false positive variable shadowing warning with Qt > +# 6.9.0 and newer. Silence it. > +if qt6_dep.version().version_compare('>=6.9.0') and \ > + cxx.version().version_compare('>=12') and cxx.version().version_compare('<14') > + qt6_cpp_args += ['-Wno-shadow'] > +endif > + > resources = qt6.preprocess(moc_headers : qcam_moc_headers, > qresources : qcam_resources, > dependencies : qt6_dep) > > base-commit: b65df7e7554b45e2d3d7fdb5b37c2ab7df3db4fe > -- > Regards, > > Laurent Pinchart >
diff --git a/src/apps/qcam/meson.build b/src/apps/qcam/meson.build index f7c140643373..9ca047b0f927 100644 --- a/src/apps/qcam/meson.build +++ b/src/apps/qcam/meson.build @@ -42,6 +42,13 @@ qt6_cpp_args = [ '-Wno-extra-semi', ] +# gcc 12 and 13 output a false positive variable shadowing warning with Qt +# 6.9.0 and newer. Silence it. +if qt6_dep.version().version_compare('>=6.9.0') and \ + cxx.version().version_compare('>=12') and cxx.version().version_compare('<14') + qt6_cpp_args += ['-Wno-shadow'] +endif + resources = qt6.preprocess(moc_headers : qcam_moc_headers, qresources : qcam_resources, dependencies : qt6_dep)
In Qt 6.9.0 the qtmochelpers.h header introduced a construct that gcc 12 and gcc 13 incorrectly flag as variable shadowing: In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:12: /usr/include/qt6/QtCore/qtmochelpers.h: In instantiation of ‘constexpr void QtMocHelpers::detail::UintDataStorage<std::integer_sequence<int, Idx ...>, T ...>::forEach(F&&) const [with F = QtMocHelpers::UintData<QtMocHelpers::SignalData<void(libcamera::FrameBuffer*)> >::copyTo<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t, QtMocHelpers::MetaObjectContents<24, 10, 60, 3> >(QtMocHelpers::MetaObjectContents<24, 10, 60, 3>&, size_t, uint&) const::<lambda(const auto:39&)>; int ...Idx = {0}; T = {QtMocHelpers::SignalData<void(libcamera::FrameBuffer*)>}]’: /usr/include/qt6/QtCore/qtmochelpers.h:255:21: required from ‘constexpr const QtMocHelpers::MetaObjectContents<24, 10, 60, 3> ViewFinderGL::qt_staticMetaObjectContent<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t>’ src/apps/qcam/qcam.p/../../../../../../src/apps/qcam/viewfinder_gl.h:32:2: required from ‘constexpr const auto ViewFinderGL::qt_staticMetaObjectStaticContent<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t>’ src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:63:5: required from here src/apps/qcam/qcam.p/../../../../../../src/apps/qcam/viewfinder_gl.h:32:2: in ‘constexpr’ expansion of ‘ViewFinderGL::qt_create_metaobjectdata<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t>()’ src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:58:87: in ‘constexpr’ expansion of ‘QtMocHelpers::metaObjectData<ViewFinderGL, {anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t, StringRefStorage<char [13], char [15], char [1], char [24], char [7]>, UintData<SignalData<void(libcamera::FrameBuffer*)> >, UintData<>, UintData<> >(0, qt_stringData, qt_methods, qt_properties, qt_enums, QtMocHelpers::UintData<>(), const QtMocHelpers::detail::UintDataBlock<0, 0>{uint [1](), uint [1]()})’ /usr/include/qt6/QtCore/qtmochelpers.h:563:36: in ‘constexpr’ expansion of ‘(& methods)->QtMocHelpers::UintData<QtMocHelpers::SignalData<void(libcamera::FrameBuffer*)> >::copyTo<{anonymous}::qt_meta_tag_ZN12ViewFinderGLE_t, QtMocHelpers::MetaObjectContents<24, 10, 60, 3> >(result, ((size_t)dataoffset), metatypeoffset)’ /usr/include/qt6/QtCore/qtmochelpers.h:201:57: error: declaration of ‘entry’ shadows a member of ‘QtMocHelpers::detail::UintDataStorage<std::integer_sequence<int, 0>, QtMocHelpers::SignalData<void(libcamera::FrameBuffer*)> >’ [-Werror=shadow] 201 | [[maybe_unused]] auto invoke = [&f](const auto &entry) { f(entry.entry); return 0; }; | ~~~~~~~~~~~~^~~~~ /usr/include/qt6/QtCore/qtmochelpers.h:180:7: note: shadowed declaration is here 180 | T entry; | ^~~~~ There is little we can do but silence the warning. Do so selectively based on the Qt and gcc versions, to still detect variable shadowing with compilers unaffected by the issue. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> --- src/apps/qcam/meson.build | 7 +++++++ 1 file changed, 7 insertions(+) base-commit: b65df7e7554b45e2d3d7fdb5b37c2ab7df3db4fe