https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121143
Bug ID: 121143 Summary: FP warning from -Waggressive-loop-optimizations Product: gcc Version: 16.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: cobol Assignee: unassigned at gcc dot gnu.org Reporter: tkaminsk at gcc dot gnu.org Target Milestone: --- Created attachment 61894 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=61894&action=edit Preprocessed file. When running the attached file (part of new inplace_vector testsuite), I get following warning from -Waggressive-loop-optimizations. I have checked, and this looks like FP to me: ``` ++-v3/src/.libs -L/home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/libstdc++-v3/libsupc++/.libs -B/home/tkaminsk/gcc/16/x86_64-pc-linux-gnu/bin/ -B/home/tkaminsk/gcc/16/x86_64-pc-linux-gnu/lib/ -isystem /home/tkaminsk/gcc/16/x86_64-pc-linux-gnu/include -isystem /home/tkaminsk/gcc/16/x86_64-pc-linux-gnu/sys-include -B/home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/./libstdc++-v3/src/.libs -fmessage-length=0 -fno-show-column -ffunction-sections -fdata-sections -fcf-protection -mshstk -g -O2 -DLOCALEDIR="." -nostdinc++ -I/home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu -I/home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/libstdc++-v3/include -I/home/tkaminsk/src/gcc/libstdc++-v3/libsupc++ -I/home/tkaminsk/src/gcc/libstdc++-v3/include/backward -I/home/tkaminsk/src/gcc/libstdc++-v3/testsuite/util /home/tkaminsk/src/gcc/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range.cc -std=gnu++26 -Wabi=20 ./libtestc++.a -Wl,--gc-sections -L/home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/libstdc++-v3/src/filesystem/.libs -L/home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/libstdc++-v3/src/experimental/.libs -lm -o ./from_range.exe -save-temps In file included from /home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/libstdc++-v3/include/inplace_vector:44, from /home/tkaminsk/src/gcc/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range.cc:3: In member function ‘constexpr std::ranges::uninitialized_copy_n_result<_Iter, _Out> std::ranges::__uninitialized_copy_n_fn::operator()(_Iter, std::iter_difference_t<_Iter>, _Out, _Sent) const [with _Iter = __gnu_test::forward_iterator_wrapper<int>; _Out = int*; _Sent = std::unreachable_sentinel_t]’, inlined from ‘constexpr void std::inplace_vector<_Tp, _Nm>::append_range(_Rg&&) [with _Rg = __gnu_test::test_range<int, __gnu_test::forward_iterator_wrapper>&; _Tp = int; long unsigned int _Nm = 5]’ at /home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/libstdc++-v3/include/inplace_vector:539, inlined from ‘constexpr std::inplace_vector<_Tp, _Nm>::inplace_vector(std::from_range_t, _Rg&&) [with _Rg = __gnu_test::test_range<int, __gnu_test::forward_iterator_wrapper>; _Tp = int; long unsigned int _Nm = 5]’ at /home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/libstdc++-v3/include/inplace_vector:132, inlined from ‘constexpr void do_test_r() [with Range = __gnu_test::test_range<int, __gnu_test::forward_iterator_wrapper>]’ at /home/tkaminsk/src/gcc/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range.cc:116: /home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/ranges_uninitialized.h:347: warning: iteration 5 invokes undefined behavior [-Waggressive-loop-optimizations] 347 | ++__ofirst, (void)++__ifirst, (void)--__n) | ^~~~~~~~~~~ /home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/ranges_uninitialized.h:346: note: within this loop 346 | for (; __n > 0 && __ofirst != __olast; | ~~~~^~~ In member function ‘constexpr std::ranges::uninitialized_copy_n_result<_Iter, _Out> std::ranges::__uninitialized_copy_n_fn::operator()(_Iter, std::iter_difference_t<_Iter>, _Out, _Sent) const [with _Iter = __gnu_test::forward_iterator_wrapper<short int>; _Out = int*; _Sent = std::unreachable_sentinel_t]’, inlined from ‘constexpr void std::inplace_vector<_Tp, _Nm>::append_range(_Rg&&) [with _Rg = __gnu_test::test_range<short int, __gnu_test::forward_iterator_wrapper>&; _Tp = int; long unsigned int _Nm = 5]’ at /home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/libstdc++-v3/include/inplace_vector:539, inlined from ‘constexpr std::inplace_vector<_Tp, _Nm>::inplace_vector(std::from_range_t, _Rg&&) [with _Rg = __gnu_test::test_range<short int, __gnu_test::forward_iterator_wrapper>; _Tp = int; long unsigned int _Nm = 5]’ at /home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/libstdc++-v3/include/inplace_vector:132, inlined from ‘constexpr void do_test_r() [with Range = __gnu_test::test_range<short int, __gnu_test::forward_iterator_wrapper>]’ at /home/tkaminsk/src/gcc/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range.cc:116: /home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/ranges_uninitialized.h:347: warning: iteration 5 invokes undefined behavior [-Waggressive-loop-optimizations] 347 | ++__ofirst, (void)++__ifirst, (void)--__n) | ^~~~~~~~~~~ /home/tkaminsk/build/gcc/16/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/ranges_uninitialized.h:346: note: within this loop 346 | for (; __n > 0 && __ofirst != __olast; ```