PR middle-end/92761 - hash_table::expand invokes assignment on invalid objects
authorMartin Sebor <msebor@redhat.com>
Mon, 9 Dec 2019 20:54:11 +0000 (20:54 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Mon, 9 Dec 2019 20:54:11 +0000 (13:54 -0700)
commit49070d06708a8d8ae3af767f89ac40c4c12dca7b
treea61f278fe57a15598a51858bffa5b56ac45978df
parentca6932ad0ccbbbe3c788cd71595d9a25b8ae0d20
PR middle-end/92761 - hash_table::expand invokes assignment on invalid objects

PR middle-end/92761 - hash_table::expand invokes assignment on invalid objects
PR middle-end/92762 - hash_table::empty_slow invokes assignment on invalid objects

gcc/ChangeLog:

PR middle-end/92761
PR middle-end/92762
* hash-map-tests.c (test_map_of_type_with_ctor_and_dtor): Tighten
up tests.
* hash-table.h (hash_table::expand): Use placement new to copy
construct objects in uninitialized storage.
(hash_table::empty_slow): Avoid invoking copy assignment on
uninitialized objects.

From-SVN: r279139
gcc/ChangeLog
gcc/hash-map-tests.c
gcc/hash-table.h