http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58938
--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to RafaĆ Rawicki from comment #3) > This is a regression, because a more specific _GLIBCXX_ATOMIC_BUILTINS_4 was > defined (but is no longer available) and now there is defined > ATOMIC_INT_LOCK_FREE=1 (I think think the definition is correct, because > there were available _GLIBCXX_ATOMIC_BUILTINS_{1,2,4} and no > _GLIBCXX_ATOMIC_BUILTINS_8). But ATOMIC_INT_LOCK_FREE only refers to int, i.e. 4-byte integer, so if _GLIBCXX_ATOMIC_BUILTINS_4 was defined then I would expect atomic ops on int to always be lock-free, i.e. the macro should be defined to 2. It's independent of whether atomic ops for 8-byte types are supported. > The other thing is, std::exception_ptr availability should not depend on the > fact whether the platform has lock-free atomics or not. Without them you either need libatomic.so or you risk undefined behaviour such as leaking exception objects or worse, dangling references to destroyed exceptions.