¿Cómo decide GCC en qué orden dar salida a las funciones de ensamblaje?

Al leer el ensamblado que GCC genera para los archivos C en mi proyecto, noto que las funciones no se generan en el ensamblaje en el mismo orden en que aparecen en el archivo fuente. ¿Cuál es el objetivo de este reordenamiento y qué heurística utiliza GCC para decidir el pedido? (¿Es solo un artefacto de la estructura de datos que contiene funciones?) Esto no es-freorder-functions, ya que no estoy usando-fprofile-arcs.

Respuestas a la pregunta(1)

Su respuesta a la pregunta