/* { dg-do compile } */ /* { dg-options "-std=c++11 -O2" } */ __extension__ typedef unsigned long long int uint64_t; namespace std __attribute__ ((__visibility__ ("default"))) { typedef enum memory_order { memory_order_seq_cst } memory_order; } namespace std __attribute__ ((__visibility__ ("default"))) { template < typename _Tp > struct atomic { static constexpr int _S_min_alignment = (sizeof (_Tp) & (sizeof (_Tp) - 1)) || sizeof (_Tp) > 16 ? 0 : sizeof (_Tp); static constexpr int _S_alignment = _S_min_alignment > alignof (_Tp) ? _S_min_alignment : alignof (_Tp); alignas (_S_alignment) _Tp _M_i; operator _Tp () const noexcept { return load (); } _Tp load (memory_order __m = memory_order_seq_cst) const noexcept { _Tp tmp; __atomic_load (&_M_i, &tmp, __m); } }; } namespace lldb_private { namespace imp { } class Address; } namespace lldb { typedef uint64_t addr_t; class SBSection { }; class SBAddress { void SetAddress (lldb::SBSection section, lldb::addr_t offset); lldb_private::Address & ref (); }; } namespace lldb_private { class Address { public: const Address & SetOffset (lldb::addr_t offset) { bool changed = m_offset != offset; } std::atomic < lldb::addr_t > m_offset; }; } using namespace lldb; using namespace lldb_private; void SBAddress::SetAddress (lldb::SBSection section, lldb::addr_t offset) { Address & addr = ref (); addr.SetOffset (offset); }