[Bug c++/83085] New: Suspicious type qualifiers ignored on cast result type [-Werror=ignored-qualifiers]

andi at mozilla dot com gcc-bugzilla@gcc.gnu.org
Tue Nov 21 09:59:00 GMT 2017


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83085

            Bug ID: 83085
           Summary: Suspicious type qualifiers ignored on cast result type
                    [-Werror=ignored-qualifiers]
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: andi at mozilla dot com
  Target Milestone: ---

I'm using this debian snapshop,https://tracker.debian.org/pkg/gcc-8, of gcc8 in
order to build mozilla firefox, and I encountered this potential issue when
building with -Werror=ignored-qualifiers.

>> 2:46.84 In file included from /root/firefox-gcc-last/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Result.h:17:0,
>> 2:46.84                  from /root/firefox-gcc-last/obj-x86_64-pc-linux-gnu/dist/include/js/Result.h:119,
>> 2:46.84                  from /root/firefox-gcc-last/obj-x86_64-pc-linux-gnu/dist/include/jspubtd.h:22,
>> 2:46.84                  from /root/firefox-gcc-last/obj-x86_64-pc-linux-gnu/dist/include/nsCycleCollectionTraversalCallback.h:10,
>> 2:46.84                  from /root/firefox-gcc-last/obj-x86_64-pc-linux-gnu/dist/include/nsCycleCollectionNoteChild.h:13,
>> 2:46.84                  from /root/firefox-gcc-last/obj-x86_64-pc-linux-gnu/dist/include/nsCOMPtr.h:33,
>> 2:46.84                  from /root/firefox-gcc-last/obj-x86_64-pc-linux-gnu/dist/include/nsAutoPtr.h:10,
>> 2:46.84                  from /root/firefox-gcc-last/ipc/chromium/src/chrome/common/ipc_message.h:21,
>> 2:46.84                  from /root/firefox-gcc-last/ipc/chromium/src/chrome/common/ipc_message_utils.h:22,
>> 2:46.84                  from /root/firefox-gcc-last/obj-x86_64-pc-linux-gnu/dist/include/ipc/IPCMessageUtils.h:11,
>> 2:46.84                  from /root/firefox-gcc-last/obj-x86_64-pc-linux-gnu/ipc/ipdl/_ipdlheaders/mozilla/ipc/IPCStream.h:11,
>> 2:46.84                  from /root/firefox-gcc-last/ipc/glue/IPCStreamUtils.h:10,
>> 2:46.84                  from /root/firefox-gcc-last/ipc/glue/IPCStreamUtils.cpp:7,
>> 2:46.84                  from /root/firefox-gcc-last/obj-x86_64-pc-linux-gnu/ipc/glue/Unified_cpp_ipc_glue1.cpp:2:
>> 2:46.84 /root/firefox-gcc-last/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Variant.h: In instantiation of 'typename mozilla::detail::Nth<N, Ts ...>::Type mozilla::Variant<Ts>::extract() [with long unsigned int N = 0; Ts = {const int, const char*, void (*)(nsITimer*, bool, void*, char*, long unsigned int)}; typename mozilla::detail::Nth<N, Ts ...>::Type = const int]':
>> 2:46.84 /root/firefox-gcc-last/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Variant.h:219:7:   required from 'static void mozilla::detail::VariantImplementation<Tag, N, T, Ts ...>::moveConstruct(void*, Variant&&) [with Variant = mozilla::Variant<const int, const char*, void (*)(nsITimer*, bool, void*, char*, long unsigned int)>; Tag = unsigned char; long unsigned int N = 0; T = const int; Ts = {const char*, void (*)(nsITimer*, bool, void*, char*, long unsigned int)}]'
>> 2:46.84 /root/firefox-gcc-last/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Variant.h:588:24:   required from 'mozilla::Variant<Ts>::Variant(mozilla::Variant<Ts>&&) [with Ts = {const int, const char*, void (*)(nsITimer*, bool, void*, char*, long unsigned int)}]'
>> 2:46.84 /usr/include/c++/8/bits/move.h:193:11:   required from 'typename std::enable_if<std::__and_<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> >::value>::type std::swap(_Tp&, _Tp&) [with _Tp = mozilla::Variant<const int, const char*, void (*)(nsITimer*, bool, void*, char*, long unsigned int)>; typename std::enable_if<std::__and_<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> >::value>::type = void]'
>> 2:46.84 /root/firefox-gcc-last/xpcom/threads/nsTimerImpl.h:98:35:   required from here
>> 2:46.84 /root/firefox-gcc-last/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Variant.h:714:44: error: type qualifiers ignored on cast result type [-Werror=ignored-qualifiers]
>> 2:46.84      return typename detail::Nth<N, Ts...>::Type(Move(as<N>()));
>> 2:46.84 

Looking at the code the issue is reported here:
https://dxr.mozilla.org/mozilla-central/source/mfbt/Variant.h?q=return+typename+detail%3A%3ANth%3CN%2C+Ts...%3E%3A%3AType%28Move%28as%3CN%3E%28%29%29%29%3B&redirect_type=single#709

That gets called from here:
https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsTimerImpl.h?q=nsTimerImpl.h&redirect_type=direct#98
I personally believe that in this context the warning just adds noise since
nothing dangerous nor standard compliant happens.


More information about the Gcc-bugs mailing list