Díky za super článek.
Říkám si, že některé ty optimalizace by mohl překladač udělat, i když o to není žádán. Například nastavování errno - tam je přece většinou vidět, zda hned po té operaci program čte errno. Anebo zda dělá něco jiného, co by to errno mohlo zase změnit. Pokud se errno nekontroluje nikde, lze ho bezpečně nenastavovat, ne?
> zda hned po té operaci program čte errno
On ho nemusí číst hned ale třeba o pár úrovní jinde. Tam už překladač nemusí vidět.
A autoři překladačů musí přemýšlet jinak než normální programátoři. Bezpečná optimalizace nesmí změnit chování ani v extrémně obskurních a nepravděpodobných případech. Pokud to errno někdo někde může číst a je nějaká větev, která ho nezmění, tak tam tu hodnotu zapsat musí.
Druhá věc je samozřejmě to, že errno je historický relikt. Je to špatně z mnoha úhlů pohledu, jen se ho nejde jednoduše zbavit.