Skip to content

Warnings in release build #170

@mingxwa

Description

@mingxwa

When building tests with -DCMAKE_BUILD_TYPE=Release with GCC or MSVC, there will be some warnings. Looks like false positive.

GCC 12:

In file included from /usr/include/c++/12/vector:70,
                 from /home/runner/work/proxy/proxy/build-gcc-12/_deps/googletest-src/googletest/include/gtest/gtest.h:61,
                 from /home/runner/work/proxy/proxy/tests/proxy_lifetime_tests.cpp:4:
In member function ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {int&, utils::LifetimeOperationType&}; _Tp = utils::LifetimeOperation; _Alloc = std::allocator<utils::LifetimeOperation>]’,
    inlined from ‘int utils::LifetimeTracker::AllocateId(utils::LifetimeOperationType)’ at /home/runner/work/proxy/proxy/tests/utils.h:75:22,
    inlined from ‘utils::LifetimeTracker::Session::Session(utils::LifetimeTracker*)’ at /home/runner/work/proxy/proxy/tests/utils.h:45:31,
    inlined from ‘T pro::conversion_dispatch<T, Expl>::operator()(U&&) requires  std::conditional<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::conditional_t<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::value [with U = std::nullptr_t; T = utils::LifetimeTracker::Session; bool Expl = true]’ at /home/runner/work/proxy/proxy/proxy.h:1516:53,
    inlined from ‘R pro::details::invoke_dispatch(Args&& ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; R = utils::LifetimeTracker::Session; Args = {std::nullptr_t}]’ at /home/runner/work/proxy/proxy/proxy.h:187:43,
    inlined from ‘R pro::details::default_conv_dispatcher(add_qualifier_t<std::byte, Q>, Args ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; qualifier_type Q = pro::details::qualifier_type::const_lv; R = utils::LifetimeTracker::Session; Args = {}]’ at /home/runner/work/proxy/proxy/proxy.h:214:72:
/usr/include/c++/12/bits/vector.tcc:114:27: warning: array subscript 0 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
  114 |         if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
      |             ~~~~~~~~~~~~~~^~~~~~~~~
/usr/include/c++/12/bits/vector.tcc:114:54: warning: array subscript 0 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
  114 |         if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
      |                                        ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
In member function ‘constexpr void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {int&, utils::LifetimeOperationType&}; _Tp = utils::LifetimeOperation; _Alloc = std::allocator<utils::LifetimeOperation>]’,
    inlined from ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {int&, utils::LifetimeOperationType&}; _Tp = utils::LifetimeOperation; _Alloc = std::allocator<utils::LifetimeOperation>]’ at /usr/include/c++/12/bits/vector.tcc:123:21,
    inlined from ‘int utils::LifetimeTracker::AllocateId(utils::LifetimeOperationType)’ at /home/runner/work/proxy/proxy/tests/utils.h:75:22,
    inlined from ‘utils::LifetimeTracker::Session::Session(utils::LifetimeTracker*)’ at /home/runner/work/proxy/proxy/tests/utils.h:45:31,
    inlined from ‘T pro::conversion_dispatch<T, Expl>::operator()(U&&) requires  std::conditional<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::conditional_t<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::value [with U = std::nullptr_t; T = utils::LifetimeTracker::Session; bool Expl = true]’ at /home/runner/work/proxy/proxy/proxy.h:1516:53,
    inlined from ‘R pro::details::invoke_dispatch(Args&& ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; R = utils::LifetimeTracker::Session; Args = {std::nullptr_t}]’ at /home/runner/work/proxy/proxy/proxy.h:187:43,
    inlined from ‘R pro::details::default_conv_dispatcher(add_qualifier_t<std::byte, Q>, Args ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; qualifier_type Q = pro::details::qualifier_type::const_lv; R = utils::LifetimeTracker::Session; Args = {}]’ at /home/runner/work/proxy/proxy/proxy.h:214:72:
/usr/include/c++/12/bits/vector.tcc:514:35: warning: array subscript 0 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
  514 |                     this->_M_impl._M_end_of_storage - __old_start);
      |                     ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/vector.tcc:515:30: warning: array subscript 0 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
  515 |       this->_M_impl._M_start = __new_start;
      |       ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
/usr/include/c++/12/bits/vector.tcc:516:31: warning: array subscript 0 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
  516 |       this->_M_impl._M_finish = __new_finish;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
/usr/include/c++/12/bits/vector.tcc:517:39: warning: array subscript 0 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
  517 |       this->_M_impl._M_end_of_storage = __new_start + __len;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
In member function ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {int&, utils::LifetimeOperationType&}; _Tp = utils::LifetimeOperation; _Alloc = std::allocator<utils::LifetimeOperation>]’,
    inlined from ‘int utils::LifetimeTracker::AllocateId(utils::LifetimeOperationType)’ at /home/runner/work/proxy/proxy/tests/utils.h:75:22,
    inlined from ‘utils::LifetimeTracker::Session::Session(utils::LifetimeTracker*)’ at /home/runner/work/proxy/proxy/tests/utils.h:45:31,
    inlined from ‘T pro::conversion_dispatch<T, Expl>::operator()(U&&) requires  std::conditional<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::conditional_t<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::value [with U = std::nullptr_t; T = utils::LifetimeTracker::Session; bool Expl = true]’ at /home/runner/work/proxy/proxy/proxy.h:1516:53,
    inlined from ‘R pro::details::invoke_dispatch(Args&& ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; R = utils::LifetimeTracker::Session; Args = {std::nullptr_t}]’ at /home/runner/work/proxy/proxy/proxy.h:187:43,
    inlined from ‘R pro::details::default_conv_dispatcher(add_qualifier_t<std::byte, Q>, Args ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; qualifier_type Q = pro::details::qualifier_type::const_lv; R = utils::LifetimeTracker::Session; Args = {}]’ at /home/runner/work/proxy/proxy/proxy.h:214:72:
/usr/include/c++/12/bits/vector.tcc:119:13: warning: array subscript 0 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
  119 |             ++this->_M_impl._M_finish;
      |             ^~
In file included from /usr/include/c++/12/bits/stl_algobase.h:67,
                 from /usr/include/c++/12/bits/stl_uninitialized.h:63,
                 from /usr/include/c++/12/memory:65,
                 from /home/runner/work/proxy/proxy/build-gcc-12/_deps/googletest-src/googletest/include/gtest/gtest.h:55:
In constructor ‘constexpr __gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator(const _Iterator&) [with _Iterator = utils::LifetimeOperation*; _Container = std::vector<utils::LifetimeOperation>]’,
    inlined from ‘constexpr std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::end() [with _Tp = utils::LifetimeOperation; _Alloc = std::allocator<utils::LifetimeOperation>]’ at /usr/include/c++/12/bits/stl_vector.h:891:16,
    inlined from ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::back() [with _Tp = utils::LifetimeOperation; _Alloc = std::allocator<utils::LifetimeOperation>]’ at /usr/include/c++/12/bits/stl_vector.h:1[233](https://github.com/microsoft/proxy/actions/runs/11139774882/job/30957119095?pr=169#step:6:234):14,
    inlined from ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {int&, utils::LifetimeOperationType&}; _Tp = utils::LifetimeOperation; _Alloc = std::allocator<utils::LifetimeOperation>]’ at /usr/include/c++/12/bits/vector.tcc:125:13,
    inlined from ‘int utils::LifetimeTracker::AllocateId(utils::LifetimeOperationType)’ at /home/runner/work/proxy/proxy/tests/utils.h:75:22,
    inlined from ‘utils::LifetimeTracker::Session::Session(utils::LifetimeTracker*)’ at /home/runner/work/proxy/proxy/tests/utils.h:45:31,
    inlined from ‘T pro::conversion_dispatch<T, Expl>::operator()(U&&) requires  std::conditional<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::conditional_t<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::value [with U = std::nullptr_t; T = utils::LifetimeTracker::Session; bool Expl = true]’ at /home/runner/work/proxy/proxy/proxy.h:1516:53,
    inlined from ‘R pro::details::invoke_dispatch(Args&& ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; R = utils::LifetimeTracker::Session; Args = {std::nullptr_t}]’ at /home/runner/work/proxy/proxy/proxy.h:187:43,
    inlined from ‘R pro::details::default_conv_dispatcher(add_qualifier_t<std::byte, Q>, Args ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; qualifier_type Q = pro::details::qualifier_type::const_lv; R = utils::LifetimeTracker::Session; Args = {}]’ at /home/runner/work/proxy/proxy/proxy.h:214:72:
/usr/include/c++/12/bits/stl_iterator.h:1073:9: warning: array subscript 1 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
 1073 |       : _M_current(__i) { }
      |         ^~~~~~~~~~~~~~~
In member function ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {int&, utils::LifetimeOperationType&}; _Tp = utils::LifetimeOperation; _Alloc = std::allocator<utils::LifetimeOperation>]’,
    inlined from ‘int utils::LifetimeTracker::AllocateId(utils::LifetimeOperationType)’ at /home/runner/work/proxy/proxy/tests/utils.h:75:22,
    inlined from ‘utils::LifetimeTracker::Session::Session(utils::LifetimeTracker*)’ at /home/runner/work/proxy/proxy/tests/utils.h:45:31,
    inlined from ‘T pro::conversion_dispatch<T, Expl>::operator()(U&&) requires  std::conditional<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::conditional_t<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::value [with U = std::nullptr_t; T = utils::LifetimeTracker::Session; bool Expl = true]’ at /home/runner/work/proxy/proxy/proxy.h:1516:53,
    inlined from ‘R pro::details::invoke_dispatch(Args&& ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; R = utils::LifetimeTracker::Session; Args = {std::nullptr_t}]’ at /home/runner/work/proxy/proxy/proxy.h:187:43,
    inlined from ‘R pro::details::default_conv_dispatcher(add_qualifier_t<std::byte, Q>, Args ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; qualifier_type Q = pro::details::qualifier_type::rv; R = utils::LifetimeTracker::Session; Args = {}]’ at /home/runner/work/proxy/proxy/proxy.h:214:72:
/usr/include/c++/12/bits/vector.tcc:114:27: warning: array subscript 0 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
  114 |         if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
      |             ~~~~~~~~~~~~~~^~~~~~~~~
/usr/include/c++/12/bits/vector.tcc:114:54: warning: array subscript 0 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
  114 |         if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
      |                                        ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
In member function ‘constexpr void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {int&, utils::LifetimeOperationType&}; _Tp = utils::LifetimeOperation; _Alloc = std::allocator<utils::LifetimeOperation>]’,
    inlined from ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {int&, utils::LifetimeOperationType&}; _Tp = utils::LifetimeOperation; _Alloc = std::allocator<utils::LifetimeOperation>]’ at /usr/include/c++/12/bits/vector.tcc:123:21,
    inlined from ‘int utils::LifetimeTracker::AllocateId(utils::LifetimeOperationType)’ at /home/runner/work/proxy/proxy/tests/utils.h:75:22,
    inlined from ‘utils::LifetimeTracker::Session::Session(utils::LifetimeTracker*)’ at /home/runner/work/proxy/proxy/tests/utils.h:45:31,
    inlined from ‘T pro::conversion_dispatch<T, Expl>::operator()(U&&) requires  std::conditional<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::conditional_t<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::value [with U = std::nullptr_t; T = utils::LifetimeTracker::Session; bool Expl = true]’ at /home/runner/work/proxy/proxy/proxy.h:1516:53,
    inlined from ‘R pro::details::invoke_dispatch(Args&& ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; R = utils::LifetimeTracker::Session; Args = {std::nullptr_t}]’ at /home/runner/work/proxy/proxy/proxy.h:187:43,
    inlined from ‘R pro::details::default_conv_dispatcher(add_qualifier_t<std::byte, Q>, Args ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; qualifier_type Q = pro::details::qualifier_type::rv; R = utils::LifetimeTracker::Session; Args = {}]’ at /home/runner/work/proxy/proxy/proxy.h:214:72:
/usr/include/c++/12/bits/vector.tcc:514:35: warning: array subscript 0 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
  514 |                     this->_M_impl._M_end_of_storage - __old_start);
      |                     ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/vector.tcc:515:30: warning: array subscript 0 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
  515 |       this->_M_impl._M_start = __new_start;
      |       ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
/usr/include/c++/12/bits/vector.tcc:516:31: warning: array subscript 0 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
  516 |       this->_M_impl._M_finish = __new_finish;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
/usr/include/c++/12/bits/vector.tcc:517:39: warning: array subscript 0 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
  517 |       this->_M_impl._M_end_of_storage = __new_start + __len;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
In member function ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {int&, utils::LifetimeOperationType&}; _Tp = utils::LifetimeOperation; _Alloc = std::allocator<utils::LifetimeOperation>]’,
    inlined from ‘int utils::LifetimeTracker::AllocateId(utils::LifetimeOperationType)’ at /home/runner/work/proxy/proxy/tests/utils.h:75:22,
    inlined from ‘utils::LifetimeTracker::Session::Session(utils::LifetimeTracker*)’ at /home/runner/work/proxy/proxy/tests/utils.h:45:31,
    inlined from ‘T pro::conversion_dispatch<T, Expl>::operator()(U&&) requires  std::conditional<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::conditional_t<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::value [with U = std::nullptr_t; T = utils::LifetimeTracker::Session; bool Expl = true]’ at /home/runner/work/proxy/proxy/proxy.h:1516:53,
    inlined from ‘R pro::details::invoke_dispatch(Args&& ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; R = utils::LifetimeTracker::Session; Args = {std::nullptr_t}]’ at /home/runner/work/proxy/proxy/proxy.h:187:43,
    inlined from ‘R pro::details::default_conv_dispatcher(add_qualifier_t<std::byte, Q>, Args ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; qualifier_type Q = pro::details::qualifier_type::rv; R = utils::LifetimeTracker::Session; Args = {}]’ at /home/runner/work/proxy/proxy/proxy.h:214:72:
/usr/include/c++/12/bits/vector.tcc:119:13: warning: array subscript 0 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
  119 |             ++this->_M_impl._M_finish;
      |             ^~
In constructor ‘constexpr __gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator(const _Iterator&) [with _Iterator = utils::LifetimeOperation*; _Container = std::vector<utils::LifetimeOperation>]’,
    inlined from ‘constexpr std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::end() [with _Tp = utils::LifetimeOperation; _Alloc = std::allocator<utils::LifetimeOperation>]’ at /usr/include/c++/12/bits/stl_vector.h:891:16,
    inlined from ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::back() [with _Tp = utils::LifetimeOperation; _Alloc = std::allocator<utils::LifetimeOperation>]’ at /usr/include/c++/12/bits/stl_vector.h:1233:14,
    inlined from ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {int&, utils::LifetimeOperationType&}; _Tp = utils::LifetimeOperation; _Alloc = std::allocator<utils::LifetimeOperation>]’ at /usr/include/c++/12/bits/vector.tcc:125:13,
    inlined from ‘int utils::LifetimeTracker::AllocateId(utils::LifetimeOperationType)’ at /home/runner/work/proxy/proxy/tests/utils.h:75:22,
    inlined from ‘utils::LifetimeTracker::Session::Session(utils::LifetimeTracker*)’ at /home/runner/work/proxy/proxy/tests/utils.h:45:31,
    inlined from ‘T pro::conversion_dispatch<T, Expl>::operator()(U&&) requires  std::conditional<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::conditional_t<Expl, std::is_constructible<_Tp, _Up>, std::is_convertible<_Iter, _Iterator> >::value [with U = std::nullptr_t; T = utils::LifetimeTracker::Session; bool Expl = true]’ at /home/runner/work/proxy/proxy/proxy.h:1516:53,
    inlined from ‘R pro::details::invoke_dispatch(Args&& ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; R = utils::LifetimeTracker::Session; Args = {std::nullptr_t}]’ at /home/runner/work/proxy/proxy/proxy.h:187:43,
    inlined from ‘R pro::details::default_conv_dispatcher(add_qualifier_t<std::byte, Q>, Args ...) [with D = pro::conversion_dispatch<utils::LifetimeTracker::Session>; qualifier_type Q = pro::details::qualifier_type::rv; R = utils::LifetimeTracker::Session; Args = {}]’ at /home/runner/work/proxy/proxy/proxy.h:214:72:
/usr/include/c++/12/bits/stl_iterator.h:1073:9: warning: array subscript 1 is outside array bounds of ‘std::vector<utils::LifetimeOperation> [0]’ [-Warray-bounds]
 1073 |       : _M_current(__i) { }
      |         ^~~~~~~~~~~~~~~

MSVC:

D:\a\proxy\proxy\proxy.h(187,1): warning C4702: unreachable code [D:\a\proxy\proxy\build\tests\msft_proxy_tests.vcxproj]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions