Нет, указатель кадра обычно не нужен. Компилятор может обращаться к локальным переменным относительно указателя стека и не нуждается в специальном указателе кадра.
Тем не менее, стандартная последовательность установки указателя кадра может помочь при отладке сбойной программы (даже если она не скомпилирована с -g
), потому что отладчик может использовать информацию указателя кадра для восстановления стека вызовов. Без указателя кадра у него нет информации, чтобы выяснить, где начинается один кадр стека, а где заканчивается следующий.
Итак, при использовании -fomit-frame-pointer
вы торгуете производительностью ради гораздо более сложной отладки в случае сбоя. Если критически важные для вашего кода части представляют собой небольшие циклы и не вызывают никаких функций, то пропуск указателя кадра также не принесет большого преимущества.