https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98753
Boris Kolpackov <boris at kolpackov dot net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |boris at kolpackov dot net --- Comment #11 from Boris Kolpackov <boris at kolpackov dot net> --- I believe I am encountering a similar false positive so I will attach the test cases to this bug (but let me know if I should instead attach them to 54202 or create a new bug). The attached test.cxx is a cleaned-up original code while test-simplified.cxx is its further simplified version (thanks to Matthew Krupcale for coming up with both): g++ -O1 -c test.cxx In member function ‘void small_allocator<T, N, B>::deallocate(void*, std::size_t) [with T = f()::expr; long unsigned int N = 1; B = small_allocator_buffer<f()::expr, 1>]’, inlined from ‘std::vector<_Tp, _Alloc>::pointer std::vector<_Tp, _Alloc>::_M_allocate_and_copy(std::vector<_Tp, _Alloc>::size_type, _ForwardIterator, _ForwardIterator) [with _ForwardIterator = const f()::expr*; _Tp = f()::expr; _Alloc = small_allocator<f()::expr, 1, small_allocator_buffer<f()::expr, 1> >]’ at /home/boris/work/build2/tests/modules/gcc2/gcc-install/include/c++/11.0.0/bits/alloc_traits.h:341:23, inlined from ‘void std::vector<_Tp, _Alloc>::reserve(std::vector<_Tp, _Alloc>::size_type) [with _Tp = f()::expr; _Alloc = small_allocator<f()::expr, 1, small_allocator_buffer<f()::expr, 1> >]’ at /home/boris/work/build2/tests/modules/gcc2/gcc-install/include/c++/11.0.0/bits/vector.tcc:85:36, inlined from ‘void small_vector<T, N>::reserve(std::size_t) [with T = f()::expr; long unsigned int N = 1]’ at test.cxx:234:26, inlined from ‘small_vector<T, N>::small_vector() [with T = f()::expr; long unsigned int N = 1]’ at test.cxx:163:15, inlined from ‘void f()’ at test.cxx:1472:27: test.cxx:121:27: warning: ‘void operator delete(void*)’ called on unallocated object ‘exprs’ [-Wfree-nonheap-object]