https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108552
--- Comment #33 from Jakub Jelinek <jakub at gcc dot gnu.org> --- It is the default unless -pthread is specified: %{fprofile-arcs|fprofile-generate*|coverage:\ %{!fprofile-update=single:\ %{pthread:-fprofile-update=prefer-atomic}}} So, when one uses -fprofile-arcs, -fprofile-generate* or -converage together with -pthread and doesn't use -fprofile-uupdate=single, then -fprofile-update=prefer-atomic is added (which is -fprofile-update=atomic if the architecture supports it).