https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114286
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- No, the documentation is correct. It describes all that the user cares about, what arguments should be passed to it when it is called. Under the hood, it is then either optimized into __atomic_load_{1,2,4,8,16} (or similarly for other atomic APIs), or to the generic one, based on the type. And, for the generic one the size argument is added because the type is irrelevant after the lowering. See c-family/c-common.cc (resolve_overloaded_builtin) for details.