-
Notifications
You must be signed in to change notification settings - Fork 216
Closed
Description
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
Labels
No labels