Я столкнулся с ситуацией, когда было бы полезно оптимизировать ненужные вызовы для realloc
. Тем не менее, похоже, что ни Clang, ни GCC не делают этого (Compiler Explorer (godbolt.org)) - хотя я вижу оптимизацию, выполняемую с помощью нескольких вызовов malloc
.
Пример:
void *myfunc() {
void *data;
data = malloc(100);
data = realloc(data, 200);
return data;
}
Я ожидал, что он будет оптимизирован для чего-то вроде следующего:
void *myfunc() {
return malloc(200);
}
Почему ни Clang, ни GCC не оптимизируют это? - Им не разрешено это делать?