Хотя это не совсем ответ на ваш вопрос, вы, вероятно, хотите знать следующее:
В общем случае вы не можете ожидать, что компилятор выполнит оптимизацию, которую вы ожидаете здесь.В общем случае компилятор не может выполнить анализ псевдонимов, необходимый для того, чтобы знать, что многократное использование указателя функции соответствует одной и той же функции.
Вызов функции между двумя вызовами функции через указатель может вВ общем случае измените содержимое указателя, таким образом вызываемая функция будет отличаться во втором вызове.
Из-за природы C выполнение надлежащего анализа псевдонимов часто трудно, и таким образом такая оптимизация неможет случиться.