Forum: Compiler & IDEs AVR-GCC setzt funktionen mehrfach um


von Christoph W. (wilibald)


Lesenswert?

Hallo,

Nach intensiven wundern über den immensen Größenzuwachs von 1,5 auf 3kb 
nach Hinzufügen von 2 Funktionsaufrufen habe ich im Assemblerlisting 
festgestellt, dass der AVR-GCC mehrere Funktionen z.T. 8x 
beinahe-identisch übersetzt. Wie kann ich dem Compiler beibringen, dass 
er diese Funktionen nur einmal übersetzt und per call aufruft?

Kann es daran liegen, dass diese aufwändigen Aufrufe in einer ISR 
stattfinden?

Vielen Dank,
die Ohmrange

von Sebastian (Gast)


Lesenswert?

Mal Compileroptionen überprüft? Hast du wirklich Os genommen, oder 
vielleicht aus Versehen O3 oder sowas?

von Christoph W. (wilibald)


Lesenswert?

bei allen Optionen bleibt das Hauptproblem bestehen.

von (prx) A. K. (prx)


Lesenswert?

Ein nachvollziehbares Beispiel könnte helfen. Die Glaskugeln sind wie 
üblich grad unpässlich.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Könnte was in der Richtung -fipa-cp sein (inperprocedural constant 
propagation).

Johann

von Christoph W. (wilibald)


Lesenswert?

Ich habe nun noch weitergesucht und einen Schalter gefunden, der 
Inlining abschaltet. Offensichtlich ist die Entscheidung, wann eine 
Funktion inline behandelt wird unausgegoren. Das hat den Code wieder auf 
die Hälfte zusammenfallen lassen.

Vielen Dank für Eure Tipps.

Gibts es einen Überblick über die gesammelten Compileroptionen vom GCC?

von (prx) A. K. (prx)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.