Sujet : Re: Fonction inline
De : adumerat (at) *nospam* free.fr (Arnaud DUMERAT)
Groupes : fr.comp.lang.cDate : 11. Feb 2022, 01:54:17
Autres entêtes
Organisation : Guest of ProXad - France
Message-ID : <c306e695cc566ff7d41dc028fe73aa26c800babd.camel@free.fr>
References : 1 2 3
User-Agent : Evolution 3.40.4 (3.40.4-2.fc34)
je vous suggère la lecture du chapitre gcc concernant les fonctions
inline, qui mentionne différents cas d'optimisations pour lesquelles
l'inlining peut être sous optimal; l'utilisation de mots clefs
complémentaires peut aussi intervenir. le standard C n'étant que
suggestif sur le mot clef inline, toute liberté est laissée au
compilateur si il n'y a que cet attribut.
Hors modification de code, je vous suggérerais plutôt un whole-archive
qui au regard de la taille de l'archive et de son utilisation pourrait
être adapté, à moins que la place ou un éventuel code mort ne soient
vraiment un problème.
Le jeudi 10 février 2022 à 07:03 +0000, JKB a écrit :
Le 09-02-2022, Arnaud DUMERAT <adumerat@free.fr> a écrit :
Bonjour,
Bonjour,
la definition de uart0_BytesToSend est elle exposee dans libusart.a
? a
en croire ld, non.
Nous sommes bien d'accord.. Mais il me semblait qu'une
fonction
inline était traitée par le compilateur et non par l'éditeur
de lien
(puisqu'elle était justement inline).
deux solutions (ou plus): passer en always inline (attribute) ou
forcer
l'export par exemple avec un -whole-archive dans la creation du .a
ou
verifier pourquoi la reference a cette definition est effacee de
l'archive
Effectivement, je vois dans la doc de gcc un
__attribute__((always_inline))
que je ne connaissais pas.. Mais quelle serait la raison pour
laquelle gcc refuserait silencieusement d'honorer le inline
de la
fonction en question ?
Bien cordialement,
JKB