Muss bei Misra Compiler Optimierung deaktiviert werden?

Gast #2123949
Lesenswert?

Hallo Spezialisten,

muss, wie im Betreff schon geschrieben, bei Einhaltung von MISRA-C,
beim Compiler die komplette Optimierung abgeschaltet werden,
oder nur spezielle Optimierungen?

Ohne irgendeiner Optimierung, erzeugt der Compiler (CodeWarrior, HCS08),
SEHR aufgeblähten Code, den man nur mühsam verfolgen kann.
Ausserdem werden dann Compilereigene Hilfsroutinen aufgerufen,
was recht undurchsichtig ist und ich eigentlich auch keine 
Bibliotheksroutinen verwenden wollte.

Genügt es nicht, solche Optimierungen wie z.B. das selbstätige
Zusammenfassen von Codestückchen in eigene Unterroutinen,
oder das Ein/Aufrollen von Schleifen zu deaktivieren?

lg
Urlauber
Gast #2123996
Lesenswert?

Gegenfrage, steht irgendwo in den MISRA-C Guidelines, dass Optimierungen 
verboten sind? MISRA-C beschreibt doch "nur" zusätzliche Regeln zur 
Programmiersprache C; waren denn da noch Forderungen an den Compiler?
#2124065
Lesenswert?

2ter Gast schrieb:
> Gegenfrage, steht irgendwo in den MISRA-C Guidelines, dass Optimierungen
> verboten sind? MISRA-C beschreibt doch "nur" zusätzliche Regeln zur
> Programmiersprache C; waren denn da noch Forderungen an den Compiler?

Korrektur: MISRA selbst verlangt das nicht. Automotive verlangt i.d.R. 
MISRA-C UND Verzicht auf Codeoptimierung. Mea culpa.

@Lothar: Möchtest du dein Leben einer automatisierten Optimierung 
anvertrauen?
Gast #2124081
Lesenswert?

Auch zu bedenken: So ein Compiler wird eigentlich fast immer mit 
Optimierung eingesetzt, die optimierende Codererzeugung ist also 
vermutlich deutlich öfter und umfangreicher getestet als der abweichende 
Rest vom nicht-optimierenden Zweig.
Und: Manche Programmierfehler meckert der Compiler nur an, wenn er auch 
die ganzen Datenfluss-Analyse-Geschichten zur Optimierung anstellt.
#2124092
Lesenswert?

Erich schrieb:
>>Automotive verlangt i.d.R. MISRA-C UND Verzicht auf Codeoptimierung
>
> Das ist QUATSCH.
>
> Die Misra rules verlangen an keiner Stelle den Verzicht auf
> Codeoptimierung.
>
> Misra verlangt lediglich, bestimmte Programmierregeln einzuhalten,
> ausreichend Klammern zu setzen und bestimmte Konstrukte zu vermeiden.
>
> http://www.ristancase.com/html/dac/manual/3.12.02%20MISRA-C%202004%20Rules.html

Muss ich jetzt wirklich die Bedeutung des Wörtchens "und" erklären?
#2124112
Lesenswert?

Eneloop schrieb:
> Auch zu bedenken: So ein Compiler wird eigentlich fast immer mit
> Optimierung eingesetzt, die optimierende Codererzeugung ist also
> vermutlich deutlich öfter und umfangreicher getestet als der abweichende
> Rest vom nicht-optimierenden Zweig.
> Und: Manche Programmierfehler meckert der Compiler nur an, wenn er auch
> die ganzen Datenfluss-Analyse-Geschichten zur Optimierung anstellt.

Das ist in dem Fall irrelevant. Für ISO26262-zertifizierte 
Automotive-Compiler gelten etwas strengere Spielregeln als für C99.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren