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.

Eine Antwort zu “Kompeilerfehler des tages

  1. It is independent of optimisation levels (-O gives the same results), the target processor (I tried a half-dozen targets), the compiler version (from gcc 4.4 upwards – gcc 4.1 gives the same code for foo_s as foo_u. I haven’t tried gcc 4.2 or 4.3).

    Verdammt. Da gibt es eine Menge zu rekompilieren…

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.