Оптимизация компилятора для устранения операции указателя на встроенную функцию в C?

Если эта функция Func1 встроена,

inline int Func1 (int* a)
{
    return *a + 1;
}

int main ()
{
    int v = GetIntFromUserInput(); // Unknown at compile-time.   
    return Func1(&v);
}

Могу ли я ожидать, что умный компилятор устранит операции с указателями? ( & a и * a ) Как я предполагаю, функция будет преобразована во что-то вроде этого,

int main ()
{
    int v = GetIntFromUserInput(); // Unknown at compile-time.
    int* a = &v;
    return *a + 1;
}

и, наконец,

int main ()
{
    int v = GetIntFromUserInput(); // Unknown at compile-time.
    return v + 1;
}

операции с указателями выглядят легко устраняемыми. Но я слышал, что работа с указателем - это нечто особенное и не может быть оптимизировано.

5
задан Eonil 14 June 2018 в 01:56
поделиться