Я действительно не знаю, может ли это помочь, но проверить O0 довольно просто при разборке (objdump -d), поскольку сгенерированный код вообще не имеет оптимизации и добавляет несколько инструкций для упрощения отладки.
Обычно в x86 пролог функции включает сохранение указателя стека (я полагаю, для обратного следа). Так, если вы найдете, например, главную функцию, вы должны увидеть что-то вроде:
... main:
... нажать% rbp
... mov% rsp,% rbp
И вы должны видеть этот «шаблон» почти в каждом начале функций.
Для других целей (я не знаю, какова ваша целевая платформа), вы должны увидеть более или менее похожие последовательности сборки в прологах или перед вызовом функции.
Для других уровней оптимизации все гораздо сложнее.
Извините, что остался расплывчатым и не ответил на весь вопрос ... Просто надеюсь, что это поможет.