Уменьшение кол-ва ветвлений
Все три компилятора просматривают код в поисках условных переходов, перепрыгивающих через безусловные (conditional branches over unconditional branches) и оптимизируют их: инвертируют условный переход, перенацеливая его на адрес безусловного перехода, а сам безусловный переход удаляют, уменьшая тем самым количество ветвлений на единицу:
if (x) a=a*2; else goto lab_1;// двойное
ветвление
if – else
b=a+1
lab_1: c=a*10