Мне было интересно, что можно явно указать пользовательское соглашение о вызовах, но учитывая зрелость и количество оптимизаций, найденных в компиляторе, когда соглашение о вызовах не указано, могу ли я ожидать, что компилятор выберет лучший вариант для конкретной функции, например, если параметры немного, и примитив использует fastcall и так далее …
Это «соглашение» по причине. Все должны следовать соглашению, иначе вы не можете вызвать свою функцию из другого модуля.
Однако, если функция не видна, у GCC есть опции. Он может встроить функцию или вызвать ее так, как хочет. Он может даже разбить его на «горячие» и «холодные» части и указать путь к горячему коду. Обычно это происходит только при сборке с оптимизацией профиля.
Если вы хотите, чтобы GCC проводил подобные оптимизации, постарайтесь скрыть свои функции. Если вы создаете исполняемый файл, посмотрите на -fwhole-program. Если вы создаете библиотеки, посмотрите на -fvisibility = hidden. Также посмотрите в -flto.
Других решений пока нет …