Kompeilerfehler des tages

Der gcc „optimiert“ bitoperazjonen so „gut“, dass das ergebnis falsch ist. Und nein, dazu muss man ihm nicht eigens sagen, dass er optimieren soll (obwohl es dann natürlich immer noch ein fehler im gcc wäre). Andere kompeiler übersetzen den beispielkohd richtig. (Gut, ich habs nur mit LLVM getestet.)

Wer den gcc nutzt oder nutzen muss und gerade mit seltsamen, ziemlich unverständlichen problemen zu kämpfen hat, wenn er ein bisschen shiftet, das komplement bildet oder ein paar bits setzt, maskiert, invertiert — ein ganz schneller tipp ohne jede garantie von mir: nehmt durchgehend unsigned und hängt an jede konstante ein U dran, dann scheint dieser fehler nicht aufzutreten.