Какие версии gcc поддерживают встроенный тип __int128?

В gcc docs 128-бит целые числа:

В качестве расширения поддерживается целочисленный скалярный тип __int128 для целей, которые имеют целочисленный режим, достаточно широкий для хранения 128 бит. Просто напишите __int128 для подписанного 128-битного целого числа или unsigned __int128 для неподписанного 128-битного целого числа.

В GCC нет поддержки для выражения целочисленной константы типа __int128 для целей с длинное длинное целое число менее 128 бит.

Мне было интересно, какая версия gcc добавила поддержку для этого типа, или если есть макрос, который можно использовать непосредственно для проверки его существования.

Ответ 1

Не уверен в первой версии, но вы можете проверить макрос __SIZEOF_INT128__, который (как правило) 16, если он определен.

Ответ 2

Получить источник и:

git log --reverse --grep='__int128'

чтобы увидеть первое вхождение слова в сообщении фиксации.

Это приводит нас к: https://github.com/gcc-mirror/gcc/commit/6388cfe24f7ecbdc2ba2d4c80638ea6c95ba07c2, в котором говорится:

Add __int128 keyword.

Затем перечислите все теги, которые содержат эту фиксацию, с помощью:

git tag --contains 6388cfe24f7ecbdc2ba2d4c80638ea6c95ba07c2

и самый ранний из них:

gcc-4_6_0-release

TODO: есть также более ранняя ссылка на __int128_t, которую я не понял. В чем разница между __int128 и _int128_t?