Как я могу настроить компилятор для генерации идентичного кода? За пример:
inline bool iszero(int a)
{
return (a == 0);
}
int main()
{
int a = 4;
if(a == 0) // First
a = 5;
if(iszero(a)) // Second
a = 5;
///...
}
В режиме отладки (с встраиванием) разобранный код выглядит так:
if(a == 0) // First
a = 5;
bool temp; // Second
if(a == 0)
temp = 0;
else
temp = 1;
if(temp == 0)
a = 5;
Почему это происходит?
Почему этот вопрос был задан? Мне нужно отладить приложение с помощью встроенных функций (для ускорения отладки) а я не хочу потерять производительность в режиме отладки.
Компилировать в режиме релиза с полной оптимизацией. Сгенерированный код будет эквивалентен:
int main()
{
}
Нет смысла сравнивать код без включенных оптимизаций, так как нет смысла сравнивать результаты с выключенными оптимизациями.
Других решений пока нет …