gcc-logo

Linus Torvalds ha criticado la mas reciente versión del compilador de software libre GCC diciendo que dicha versión “es una pura y absoluta mierda”.

A raíz de un random panic que se origino en una función de carga de equilibrio en el desarrollo del kernel 3.16 de Linux, Torvalds ha criticado la versión 4.9 de GCC luego de observar la salida que se obtuvo al compilar con la mas reciente versión de este compilador.

Entre otras cosas, Torvalds indicó en el mailing list del kernel Linux lo siguiente:

“Ok, ahora veo el código generado y su compilador es una pura y absoluta mierda. Añado a Jakub en la cc del correo porque GCC 4.9 parece ser una terminal rota.

Observen que su compilador hace cosas absolutamente locas con el spilling, incluyendo el spilling en una constante. Por amor a Dios, ese compilador no debió graduarse desde el jardín de infancia. Estamos hablando de como la pereza cayo sobre la cabeza como si se tratase de un bebe, y esos niveles de retardo están aquí:


movq $load_balance_mask, -136(%rbp) #, %sfp
subq $184, %rsp #,
movq (%rdx), %rax # sd_22(D)->parent, sd_parent
movl %edi, -144(%rbp) # this_cpu, %sfp
movl %ecx, -140(%rbp) # idle, %sfp
movq %r8, -200(%rbp) # continue_balancing, %sfp
movq %rax, -184(%rbp) # sd_parent, %sfp
movq -136(%rbp), %rax # %sfp, tcp_ptr__
#APP
add %gs:this_cpu_off, %rax # this_cpu_off, tcp_ptr__
#NO_APP

Observen el contenido del -136(%rbp). En serio, esa es una constante inmediata que el compilador esta derramando. Alguien necesita reparar ese error que esta en GCC porque, maldita sea, es una mierda loca muy seria.

Sin embargo, esa parte de la constante derramada solo cuenta como un ‘demasiado estúpido para vivir’. El error real es este:

movq $load_balance_mask, -136(%rbp) #, %sfp
subq $184, %rsp #,

Donde GCC crea un stack frame luego de que se haya usado para guardar esa constante *profunda* por debajo del marco de pila.”

Además indicó sobre el incluir advertencias sobre el uso de GCC 4.9, al respecto dijo: “Como sea, esto no es un error del kernel Linux, esto es un código completamente roto creado a través de su compilador. Necesitamos añadir una advertencia para así asegurar que nadie compile con GCC 4.9 y la gente de Debian debería degradar su inocente nuevo compilador.”

Vale destacar que Linus Torvalds ya ha reportado este error a la gente de GCC para que se solvente dicho problema.

Puedes conocer todos los detalles al respecto, remitiéndote al anuncio oficial.

 

Fuente: Phoronix | libuntu

¿Quién está en línea?

Hay 18291 invitados y ningún miembro en línea