int i;
void foo()
{
int j = 2;
i = -1;
i = j + 1;
j = 5;
i += j;
}
Компилятор, который при включенной оптимизации не выбросит начисто переменную j и не заменит всё тело одинм единственным занесением 8 в i - туп до безобразия. Хотя при этом он и выбросит кучу опраторов, на которые у кого-то там "авторское право" есть.
А то, что в более сложных случаях оптимизатор не всегда выбросит лишнее - так это просто недостаточно хороший оптимизатор, а не глючный. В следующей версии будет выбрасывать чаще (но те, которые не читатели, а писатели - они будут говорить, что "от версии к версии оптимизатор становится всё глючнее").
Рассчитывать, что он "не настолько умён" - это рассчитывать на удачу. И от такой удачи я уже отказался. Продолжайте жрать этот кактус сами.