when unordered_set::insert(value_type&&) was called it would be treated like unordered_set::emplace(Args&&) and it would allocate and construct a node before trying to insert it.
This caused unnecessary allocations when the value was already in the set. This patch adds an overload to __hash_table::__insert_unique that specifically handles value_type&& more link value_type const &.
This patch also adds a single unified insert function for values into __hash_table called __insert_unique_value that handles the cases for __insert_unique(value_type&&) and __insert_unique(value_type const &).
This patch fixes PR12999: http://llvm.org/bugs/show_bug.cgi?id=12999.