https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96898
--- Comment #2 from Tom de Vries <vries at gcc dot gnu.org> --- Hmm, I found this difference: - AFAIU, GOMP_atomic_start/end have barrier semantics - libatomics protect_start/end are always paired with explicit barriers, so presumably these don't have barrier semantics So, using GOMP_atomic_start for protect_start in libatomics will have the effect of issuing the barrier twice, which might be a performance problem.