Sep 29, 2024 00:56
Знаете ли вы, что программа
#include
int f()
{
std::cerr << "f" << std::endl;
}
int main()
{
f();
return 0;
}
собранная в GCC12 с флагом O2 зацикливается в бесконечном цикле?
А программа
#include
bool a = true;
bool b = false;
int f()
{
if (a) {
if (b) {
std::cerr << "if" << std::endl;
} else {
std::cerr << "else1" << std::endl;
}
} else {
std::cerr << "else2" << std::endl;
}
}
int main()
{
f();
return 0;
}
собранная так же, выводит
else1
else2
?
А теперь представьте проект из десятков тысяч строк подобного кода, написанных давно и не вашей командой, который приходится застявлять работать после переезда с gcc4 на gcc12.
И ведь в debug-сборке работает же!
Зато есть повод помочь младшим коллегам и покопаться самой :)
#include,
programming