Флаг или параметр cl.exe для отключения оптимизации хвостового вызова в / O1 или выше (эквивалентно gcc -fno-optimize-sibling-вызовам) - PullRequest
2 голосов
/ 20 декабря 2011

Я работаю над проектом, в котором мы поддерживаем наш собственный сканер стека (по разным причинам).Нам нужно иметь возможность сканировать стек с определенной степенью надежности.В настоящий момент мы сталкиваемся с проблемой, когда хвост функции вызывает интересующую нас функцию, и наша трассировка стека пропускает кадр, который будет присутствовать в отладочной сборке (/ Od).Мы уже отключили оптимизацию и вставку указателя кадра (/ Oy- и / Ob0), чтобы мы могли получать более качественные трассировки стека, но мы все же хотим иметь возможность включить некоторые оптимизации (/ O1), чтобы сделать код быстрее.Однако хвостовые вызовы все еще мешают нашим трассировкам стека.

Есть ли какой-либо флаг или параметр, который отключит эту оптимизацию в MSVC?gcc имеет -f (no-) optimize-sibling-Calls, который охватывает это.

1 Ответ

0 голосов
/ 28 ноября 2012

Нет, вы можете поместить свою функцию вызова хвоста в отдельный модуль компиляции и только скомпилировать ее без оптимизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...