Software > Coding
gcc, GEMDOS Super und Stackzerstörung
Thorsten Otto:
--- Zitat von: mfro am So 15.07.2018, 16:13:49 ---Siehe da, obwohl sich (wahrscheinlich) kein Entwickler mehr ernsthaft mit dem m68k-Backend beschäftigt, bringen neue Compilerversionen auch für unsere Oldtimer noch die ein oder andere Überraschung mit:
--- Ende Zitat ---
Ja, habe ich auch schon festgestellt. Liegt vermutlich daran, daß ein grossteil der Optimierungen auf einer Ebene gemacht wird, die völlig unabhängig vom m68k-backend ist. Sieht man auch daran, daß mittlerweile die 192k-versionen von EmuTOS damit kompiliert ~500 bytes kleiner sind (nicht dramatisch, aber immerhin).
Gibt aber wohl auch Gegenbeispiele. Zum einen führt die nicht mehr besonders intensiv duchgeführte Pflege von m68k dazu, daß einige Code-Sequenzen die aus dem Optimierer heraus kommen, nicht mehr erkannt werden und verschiedene, m68k-spezifische Optimierungen, dadurch manchmal nicht durchgeführt werden. Zum anderen sind neuere Compiler-Versionen sehr viel empfindlicher geworden was pointer-aliasing angeht, und alte Sourcen, bei denen das ignoriert wurde weil es sowieso keine Rolle spielte, erzeugen dadurch manchmal mittlerweile tatsächlich ungültigen code wenn man die Warnungen ignoriert.
mfro:
--- Zitat von: Thorsten Otto am Mo 16.07.2018, 03:13:47 ---Gibt aber wohl auch Gegenbeispiele. Zum einen führt die nicht mehr besonders intensiv duchgeführte Pflege von m68k dazu, daß einige Code-Sequenzen die aus dem Optimierer heraus kommen, nicht mehr erkannt werden und verschiedene, m68k-spezifische Optimierungen, dadurch manchmal nicht durchgeführt werden.
--- Ende Zitat ---
Hast Du dafür konkrete Beispiele?
--- Zitat von: Thorsten Otto am Mo 16.07.2018, 03:13:47 ---Zum anderen sind neuere Compiler-Versionen sehr viel empfindlicher geworden was pointer-aliasing angeht, und alte Sourcen, bei denen das ignoriert wurde weil es sowieso keine Rolle spielte, erzeugen dadurch manchmal mittlerweile tatsächlich ungültigen code wenn man die Warnungen ignoriert.
--- Ende Zitat ---
Das finde ich nicht sooo schlimm. Das eine (agressive Optimierung) geht eben nicht ohne das andere (der Compiler muss davon ausgehen können, dass der Code diesbezüglich "richtig" ist). So funktioniert "modernes C" eben.
Thorsten Otto:
--- Zitat von: mfro am Mo 16.07.2018, 05:27:52 ---Hast Du dafür konkrete Beispiele?
--- Ende Zitat ---
Ne, momentan nicht. Bei den ersten Versuchen mit dem neuen Compiler EmuTOS zu übersetzen, war das Ergebnis aber etwas unbefriedigend (unter anderem war da der Code noch ca. 1k grösser als vorher), was ua. an solchen Sachen lag.
--- Zitat ---So funktioniert "modernes C" eben.
--- Ende Zitat ---
Ja, schon klar. Ist aber 'n Problem wenn man versucht damit alte Sourcen zu übersetzen in der Hoffnung damit Geschwindigkeit herauszuholen. Ohne Anpassungen geht das meistens in die Hose.
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln