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

            Bug ID: 71312
           Summary: mutexes for shared_ptr atomics should be padded to
                    cacheline size
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
  Target Milestone: ---

src/c++11/shared_ptr.cc has:

    __gnu_cxx::__mutex&
    get_mutex(unsigned char i)
    {
      static __gnu_cxx::__mutex m[mask + 1];
      return m[i];
    }

This should be:

    __gnu_cxx::__mutex&
    get_mutex(unsigned char i)
    {
      struct M {
        alignas(C) __gnu_cxx::__mutex mx;
      };
      static M m[mask + 1];
      return m[i].mx;
    }

where C == std::hardware_destructive_interference_size

Reply via email to