[PATCH] PR libstdc++/80553 don't allow destroying non-destructible types
Marc Glisse
marc.glisse@inria.fr
Tue May 2 15:30:00 GMT 2017
On Tue, 2 May 2017, Jonathan Wakely wrote:
> On 02/05/17 10:16 +0100, Jonathan Wakely wrote:
>> On 28/04/17 13:56 +0100, Jonathan Wakely wrote:
>>> We optimize _Destroy and _Destroy_n to do nothing when the type has a
>>> trivial destructor, which means we do nothing (instead of giving an
>>> error) when trying to destroy types with deleted destructors.
>>
>> I wonder if this optimisation should even exist. The compiler should
>> be able to optimise away a loop that just calls trivial destructors,
>> without help from the library.
>
> The compiler can indeed do that optimisation, even for destructors
> like ~T() { } that are empty, but not trivial according to the
> language rules. The libstdc++ optimisation does make a difference at
> -O0 though. If we get any more bugs in that code I think we should
> just remove it though, and let the compiler do the right thing.
Does the compiler manage it for all containers, even those with iterators
much more complicated than vector's? I'd rather keep the special code in
the library, if it doesn't cause too much trouble.
--
Marc Glisse
More information about the Libstdc++
mailing list