Hallo izaseba,
Asoo! Ich hab noch avr-gcc 3.4.6. Aber ich hab schon öfters gehört, dass avr-gcc 4.1.0 noch in Entwicklungphase ist und deshalb Bugs enthalen kann. Trifft das im Moment immer noch zu?P.S. avr-gcc 4.1.0
MfG Mark
Linus TorvaldSoftware is like s e x: its better when its free.
Was die GCC-Version angeht, kann man mit 3.4.6 prima leben. Ich hab mal n Code vergleich gegen die 4.1.x gemacht, und der Code in der 4-er war nicht so dicht wie in der 3-er!
Momentan gab es da vor allem interne Umstellungen auf SSA, weil diese Darstellung sehr gut geeignet ist, um hardware-unabhängige Optimierungen zu machen. Momentan wird der Code innerhalb von GCC 4 also folgendwermassen transformiert:
C/C++/Java/... --> tree --> SSA --> tree --> RTL --> asm
[-XZitat von izaseba
Nein. Die Funktion könnte von einem anderen Modul aufgerufen werden. Sie wegzulassen könnte also zu einem Fehler zur Linkzeit führen!
Wenn die Funktion nur in diesem Modul auftaucht, dann kann man sie als "static" deklarieren und siehe, GCC wirft sie weg bzw. warnt an, daß da was unnötiges steht. Ganz wie erwünscht...
Disclaimer: none. Sue me.
Hallo Sprinter, schön Dich wieder zu sehenWas die GCC-Version angeht, kann man mit 3.4.6 prima leben. Ich hab mal n Code vergleich gegen die 4.1.x gemacht, und der Code in der 4-er war nicht so dicht wie in der 3-er!
Ich hab auch nirgendwo was anderes behauptet![]()
Stimmt, soweit hab ich nicht gedachtNein. Die Funktion könnte von einem anderen Modul aufgerufen werden. Sie wegzulassen könnte also zu einem Fehler zur Linkzeit führen!Der Kompiler kann wirklich nicht wissen, ob man die Funktion noch irgendwo anders aufruft.
Fazit:
Es klappt doch ganz gut mit der Optimierung, und -O0 wird normallerweise kein Mensch brauchen, außer zu Debugzwecken, oder ?
Gruß Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
Lesezeichen