[Bug libstdc++/66146] call_once not C++11-compliant on ppc64le

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri May 15 20:31:00 GMT 2015


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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-05-15
     Ever confirmed|0                           |1

--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Thanks, Martin. So maybe something like this:

--- a/libstdc++-v3/include/std/mutex
+++ b/libstdc++-v3/include/std/mutex
@@ -726,7 +738,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       __set_once_functor_lock_ptr(&__functor_lock);
 #endif

+#ifdef __powerpc__
+      int __e;
+      __try {
+       __e = __gthread_once(&__once._M_once, &__once_proxy);
+      } __catch(...) {
+         __once._M_once = once_flag{}._M_once;
+         __throw_exception_again;
+      }
+#else
       int __e = __gthread_once(&__once._M_once, &__once_proxy);
+#endif

 #ifndef _GLIBCXX_HAVE_TLS
       if (__functor_lock)



More information about the Gcc-bugs mailing list