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
Gast
#1348586
Mal Compileroptionen überprüft? Hast du wirklich Os genommen, oder vielleicht aus Versehen O3 oder sowas?
bei allen Optionen bleibt das Hauptproblem bestehen.
Ein nachvollziehbares Beispiel könnte helfen. Die Glaskugeln sind wie üblich grad unpässlich.
Könnte was in der Richtung -fipa-cp sein (inperprocedural constant propagation). Johann
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?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.