2012-09-28 19 views

Respuesta

11

No soy lo suficientemente compilador de g^H^H^H experto para ser capaz de hacer mucho de esto, pero tal vez alguien puede construir sobre ella ...

Los bits correspondientes de gcc pueden ser obtenido con bastante facilidad (si no lo intentas y echa un vistazo a todo el asunto) con:

svn co --depth=immediates svn://gcc.gnu.org/svn/gcc/trunk/gcc gcc 
cd gcc 
svn --set-depth infinity update config c cp 

(al menos eso es el subconjunto que parecía relevante para C/C++ que encontré cosas en, añadir otros directorios si están interesados ​​en otros idiomas, admite gcc)

Y luego

grep -R flag_expensive_optimizations . | grep -v .svn 

produce una pantalla (35 líneas) de visitas en una pequeña cantidad de archivos. Dejaré que otra persona publique un análisis más detallado (si alguien realmente se preocupa lo suficiente).

Un par de ellos me llamó la atención. Voy a mencionar que (al momento de escribir):

  • La única mención de flag_expensive_optimizations en cp/ (C++ apoyo) se encuentra en una sección de código comentado /* Handle ordinary C++ destructors. */ y parece influir en la configuración de una bandera LOOKUP_NONVIRTUAL , con el comentario asociado /* Optimize for space over speed here. */

  • Hay algunos accesos dentro del directorio/config específico del procesador (sparc, alpha, sh, i386). El único i386 se aplica para TARGET_AVX cuando no la optimización de tamaño y se comenta /* When not optimize for size, enable vzeroupper optimization for TARGET_AVX with -fexpensive-optimizations and split 32-byte AVX unaligned load/store. */

Un vistazo a algunos otros éxitos me convenció yo debería ser el contenido de salir de mi conocimiento de esta característica en el nivel de la gcc documentación.

Cuestiones relacionadas