[Хотя это старый вопрос, я подумал, что мне следует обновить и завершить ответ]
Мне не известны таблицы версий для каждой архитектуры и версии gcc, описывающие поддерживаемые встроенныеins.
Встроенные в __sync функции gcc существуют начиная с версии 4.1 (см., например, gcc 4.1.2 руководство . Как указано здесь:
Не все операции поддерживаются всеми целевыми процессорами. Если конкретная операция не может быть реализована на целевом процессоре, будет сгенерировано предупреждение и сгенерирован вызов внешней функции. Внешняя функция будет иметь то же имя, что и встроенная, сдополнительный суффикс `_n ', где n - размер типа данных.
Таким образом, когда нет реализации для конкретной архитектуры, появится предупреждение о компиляции и, я думаю, ссылка-time ошибка, если только вы не предоставили требуемую функцию с соответствующим именем.
После gcc 4.7 есть также встроенные встроенные __atomic и встроенные __syncs устарели.Например, посмотрите, как Fedora использует gcc __sync и __atomic здесь