ldionne added a comment.

In D17053#2315384 <https://reviews.llvm.org/D17053#2315384>, @dexonsmith wrote:

> In D17053#632700 <https://reviews.llvm.org/D17053#632700>, @EricWF wrote:
>
>> Maybe if we want to improve the failure mode we can add a 
>> `_LIBCPP_ASSERT(__new_last <= __end, "invalid range")`?
>
> I suspect this assertion would get optimized out, since if `__new_last > 
> __end` it's undefined behaviour to compare them. Whereas the loop condition 
> won't get optimized away.
>
> @ldionne, pointing you at this in case you have an idea (maybe specializing 
> for raw pointers?), but I'm not planning to move this forward.

Thanks for the heads up. We already have `_LIBCPP_ASSERT(!empty(), 
"vector::pop_back called for empty vector");` in `vector::pop_back()`, but it 
doesn't trigger because assertions in libc++ are tied to whether the debug mode 
is enabled, and by default, it's not enabled at all. I believe that fixing this 
instead is the right way to go, since we'll get this improvement but also 
several additional assertions that are already in place in libc++. It is on my 
roadmap to improve that situation.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D17053/new/

https://reviews.llvm.org/D17053

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D17053: [l... Duncan P. N. Exon Smith via Phabricator via cfe-commits
    • [PATCH] D1705... Louis Dionne via Phabricator via cfe-commits
    • [PATCH] D1705... Louis Dionne via Phabricator via cfe-commits

Reply via email to