[libcxx-commits] [PATCH] D59166: Remove exception throwing debug mode handler support.

Eric Fiselier via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Fri Mar 8 16:50:04 PST 2019


EricWF created this revision.
EricWF added reviewers: mclow.lists, ldionne, thomasanderson.
Herald added subscribers: libcxx-commits, arphaman, christof.
EricWF edited the summary of this revision.

The reason libc++ implemented a throwing debug mode handler was for ease of testing. Specifically,
I thought that if a debug violation aborted, we could only test one violation per file. This made
it impossible to test debug mode. Which throwing behavior we could test more!

However, the throwing approach didn't work either, since there are debug violations underneath noexcept
functions. This lead to the introduction of `_NOEXCEPT_DEBUG`, which was only noexcept when debug
mode was off.

Having thought more and having grown wiser, `_NOEXCEPT_DEBUG` was a horrible decision. It was
viral, it didn't cover all the cases it needed to, and it was observable to the user -- at worst
changing the behavior of their program.

  This patch removes the throwing debug handler, and rewrites the debug tests using 'fork-ing' style
  death tests.


Repository:
  rCXX libc++

https://reviews.llvm.org/D59166

Files:
  include/__config
  include/__debug
  include/__hash_table
  include/iterator
  include/list
  include/string
  include/vector
  lib/abi/CHANGELOG.TXT
  lib/abi/x86_64-apple-darwin.v1.abilist
  lib/abi/x86_64-apple-darwin.v2.abilist
  lib/abi/x86_64-unknown-linux-gnu.v1.abilist
  src/debug.cpp
  test/libcxx/containers/sequences/array/array.zero/db_back.pass.cpp
  test/libcxx/containers/sequences/array/array.zero/db_front.pass.cpp
  test/libcxx/containers/sequences/array/array.zero/db_indexing.pass.cpp
  test/libcxx/debug/containers/db_associative_container_tests.pass.cpp
  test/libcxx/debug/containers/db_sequence_container_iterators.pass.cpp
  test/libcxx/debug/containers/db_string.pass.cpp
  test/libcxx/debug/containers/db_unord_container_tests.pass.cpp
  test/libcxx/debug/debug_register.pass.cpp
  test/libcxx/debug/debug_throw.pass.cpp
  test/libcxx/debug/debug_throw_register.pass.cpp
  test/libcxx/input.output/filesystems/class.path/path.itr/iterator_db.pass.cpp
  test/libcxx/thread/futures/futures.promise/set_exception.pass.cpp
  test/libcxx/thread/futures/futures.promise/set_exception_at_thread_exit.pass.cpp
  test/support/container_debug_tests.hpp
  test/support/debug_mode_helper.h

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D59166.189963.patch
Type: text/x-patch
Size: 98084 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20190309/df62859d/attachment-0001.bin>


More information about the libcxx-commits mailing list