OK, la mejor respuesta que puedo ofrecer.
http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html dice "no," por omission. No hay documentación de nada para inyectar código de limpieza de pila en la salida.
Como lo que pude adivinar, la única manera de que esto podría funcionar, es inyectar algo memset
-como código (tal vez tan simple como unos pocos mov
operaciones, pero no obstante) en el comienzo de cada cuadro léxica incrustado en la que una se crea la variable automática. Tan cerca como puedo decir - y estoy ahora de un experto en las partes internas de GCC, pero - parece que no hay nada documentado que lo haga.
En más después de esto, el gccint.pdf PDF del CCG Internos (http://gcc.gnu.org/onlinedocs/gccint.pdf) en la página 361 define que el nombre del CCG para el puntero de marco etapa de comunicación de ajuste en la entrada a una función es prologue
. (Realmente no sé/entiendo si esto se aplica a otros ámbitos léxicos dentro de una función). Dado que eso debería ocurrir en un archivo de definición de la máquina (md), cualquier opción de este tipo parece que debe definirse para un Arquitectura de la CPU Busqué en su ViewCVS en línea en http://gcc.gnu.org/viewcvs/trunk/gcc/config/i386/ y encontré (al menos una) copia de prologue
alrededor de la línea 11,893 de i386.md, que después de reproducir search-for-the-function-expansion unos pocos saltos, no parece tener nada que ver con emitir un código condicional como ese.
Pero esto bajo-GCC's-campana es un poco ordenado ...
'-Wextra' es grande para las nuevas bases de código que todavía no disponen de 3 millones de líneas de código. :) –
No puedo creer que initialize se deletree "initialialize" en los documentos del compilador. –
@AndrewMarshall: ¡Ja! Ni siquiera me di cuenta de eso. Realmente está escrito de esa manera, aunque ese xlc es bastante viejo. La [ayuda en línea] actual (http://publib.boulder.ibm.com/infocenter/comphelp/v7v91/index.jsp?topic=%2Fcom.ibm.vacpp7a.doc%2Fcompiler%2Fref%2Fruoptini.htm) no tiene ese error. –