Forum: Compiler & IDEs IAR Compiler: Was ist eine "Undivisable displacement" Warnung?


von Florian R. (florian_r59)


Lesenswert?

Hi,
seit heute erhalte ich bei IAR für Renesas RX folgende Warnung an einem 
Funktionskopf:
"Warning[Ab006]: Undivisable displacement, truncated value 84 used"

Leider habe ich im Netz genau nichts darüber gefunden und wäre deshalb 
für jeden Hinweis dankbar.

Der Funktionskopf sieht so aus:
Std_ReturnType DC_CalcValuesOfDatatype(UMB_MATH_T math,
                           const UMB_DATA_TYPE_T datatype_op_1,
                           const UMB_VAL_T op_1,
                           const UMB_DATA_TYPE_T datatype_op_2,
                           const UMB_VAL_T op_2,
                           const UMB_DATA_TYPE_T result_datatype,
                           UMB_VAL_T *p_result)

UMB_MATH_T und UMB_DATA_TYPE_T sind Enums, UMB_VAL_T ist eine Struktur.

Gruß, Florian

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Displacement wird üblicherweise als Begriff benutzt bei
offset-indiziertem Speicherzugriff.  Da scheint irgendwo ein Offset
zu groß zu sein.  Eigentlich sollte ein Compiler dann natürlich
eine andere Zugriffsmethode benutzen, insofern klingt mir das eher
nach einem internen Compilerfehler.

Was sagt denn der IAR-Support dazu?

von Florian R. (florian_r59)


Lesenswert?

Ich muss mich korrigieren: UMB_VAL_T ist eine Union.

Den IAR-Support habe ich noch nicht gefragt. Was mich tatsächlich 
stutzig macht ist der "truncated value used" Hinweis, das hört sich 
nicht gut an.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Florian R. schrieb:
> das hört sich nicht gut an.

Sehe ich auch so.  Das heißt, er greift irgendwohin für den Wert,
aber sehr wahrscheinlich nicht dahin, wo wirklich das Gewünschte
steht …

von gnuopfer (Gast)


Lesenswert?

Florian R. schrieb:
> ... UMB_VAL_T ist eine Struktur.

Übergib einfach einen Pointer statt der Struktur, dann kann es keine 
Alignment Probleme mehr geben.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Florian R. schrieb:
> Ich muss mich korrigieren: UMB_VAL_T ist eine Union.

Und wie groß ist die?

von Cortex 2 go (Gast)


Lesenswert?

Wie wäre es mit den ganzen Code und der Zeilenangabe von Compilermecker?

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.