Hallo zusammen,
kennt jemand eine gute Beschreibung, wann sich eine Funktion inlinen
läßt und wann nicht?
Ich habe folgende (einfache) Funktion für einen Cortex-M3:
1 | static __attribute__((always_inline)) void SetBits(GPIO_TypeDef * const GPIOx, const uint16_t bit)
|
2 | {
|
3 | GPIOx->BSRR = bit;
|
4 | }
|
die mir mit der Warnung "always_inline function might not be inlinable"
quittiert wird. Das Assembler-Listing sagt mir, daß sie auch korrekt
geinlined wird (zumindest an den Stellen, wo ich nachgeguckt habe).
Sie wird mit einem konstanten Zeiger aufgerufen, dessen Inhalt
veränderlich ist- wie es sich für Portspins gehört, also
Warum meckert der Kompiler?
Viele Grüße
W.T.