https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112480

--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I think I prefer:

--- a/libstdc++-v3/include/std/optional
+++ b/libstdc++-v3/include/std/optional
@@ -311,6 +311,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       {
        if (this->_M_engaged)
          _M_destroy();
+
+       // The following seems redundant but improves codegen, see PR 112480.
+       if constexpr (is_trivially_destructible_v<_Tp>)
+         this->_M_engaged = false;
       }
     };

Reply via email to