Оптимизации птсо

Sep 16, 2020 16:20


Есть программка. Мне сказали что она делает решето Эратосфена, но на самом деле это не важно.

int main()
{
int n = 500000000;
int *a = new int[n + 1];

for (int i = 0; i <= n; i++)
{
a[i] = i;
}

for (int i = 2; i * i <= n; i++)
{
if (a[i])
{
for (int j = i * i; j <= n; j += i)
{
a[j] = 0;
}
}
}

delete[] a;
return 0;
}

Вопрос. Почему ни gcc ни clang даже под -O3 не понимают что это всё можно упростить до return 0; т.к. результат вычислений никуда не используется? Пробовал заменять new/delete на аллокацию на стэке, не помогает.

Update: в GCC был баг, но теперь его починили и ВЖУХ он оптимизирует весь этот код вникуда.

c++

Previous post Next post
Up