función virtual pura llamada en gcc 4.4 pero no en la versión más nueva o clang 3.4

 C Programming >> Programación C >  >> Tags >> Clang
función virtual pura llamada en gcc 4.4 pero no en la versión más nueva o clang 3.4

Este es un error específico de Red Hat que no está presente en FSF GCC. No es un problema en su código.

En un sistema con GCC de CentOS 6 y FSF GCC 4.4.7, ambos generan una lista de ensamblaje y ven las diferencias entre los dos, salta un bit:

GCC de CentOS 6 genera

movq $_ZTV8BaseType+16, (%rsp)

mientras que FSF GCC 4.4.7 genera

movq $_ZTV11TypeTextFix+16, (%rsp)

En otras palabras, uno de los parches GCC de Red Hat hace que configure vtable incorrectamente. Esto es parte de tu main función, puede verlo en su propia lista de ensamblaje poco después de .L48: .

Red Hat aplica muchos parches a su versión de GCC, y algunos de ellos son parches que afectan la generación de código. Desafortunadamente, uno de ellos parece tener un efecto secundario no deseado.