Autor Thema: gcc, GEMDOS Super und Stackzerstörung  (Gelesen 74102 mal)

0 Mitglieder und 3 Gäste betrachten dieses Thema.

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.315
Re: Pure C vs. gcc -- Wer ist schneller
« Antwort #60 am: Mo 16.07.2018, 03:13:47 »
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:

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.

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: Pure C vs. gcc -- Wer ist schneller
« Antwort #61 am: Mo 16.07.2018, 05:27:52 »
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.
Hast Du dafür konkrete Beispiele?

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.

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.
And remember: Beethoven wrote his first symphony in C

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.315
Re: Pure C vs. gcc -- Wer ist schneller
« Antwort #62 am: Mo 16.07.2018, 06:25:31 »
Hast Du dafür konkrete Beispiele?

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.

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.