Actualmente tengo funciones en línea llamando a otra función en línea (una función simple de 4 líneas de getAbs()
). Sin embargo, descubrí buscando en el código de ensamblador que las funciones en línea "grandes" están bien en línea, pero el compilador usa un salto bl
para llamar a la función getAbs()
.en línea una función dentro de otra función en línea en C
¿No es posible alinear una función en otra función en línea? Por cierto, este es un código incrustado, no estamos utilizando las bibliotecas estándar.
Editar: El compilador es WindRiver, y ya he comprobado que la incorporación sería beneficiosa (4 instrucciones en lugar de + -40).
¿Qué compilador estás usando? A menudo hay formas de forzar la alineación. Supongo que ya ha perfilado su código y está bastante seguro de que la inclusión será beneficiosa. En GCC, esto se puede hacer con __attribute __ ((always_inline)). – stinky472
¿Puedo preguntar por qué te importan las decisiones que ha tomado el compilador? ¿Ha perfilado el código y encontrado que la sobrecarga de esa instrucción de salto único está matando el rendimiento? – JeremyP