¿Cuál es la explicación para "advertencia: suponiendo que el bucle no es infinito"

Acababa de tomar la decisión de cambiar tantas variables deunsigned aint y al volver a compilar el código en cuestión, recibió este mensaje de advertencia:

freespace_state.c:203: warning: assuming that the loop is not infinite

La línea en cuestión:

for (x = startx; x <= endx; ++x, ++xptr)

Este bucle tiene 60 líneas de código (inc espacio en blanco / paréntesis, etc.) y tiene ungoto dentro de él, y al menos una aparición decontinue.

En este caso, creo que aprecio que GCC esté asumiendo que este ciclo no es infinito, porque nunca debería circular indefinidamente.

¿Qué está tratando de decirme GCC aquí?

La gramática de la advertencia es casi sugerente de que la advertencia debe tomarse dentro del contexto de alguna otra advertencia, pero no hay ninguna dentro de ese contexto.

[editar] Todo es completamente culpa mía. Robé algunas opciones de optimización y advertencia de una pregunta aquí en algún lugar sin entenderlas realmente, y desde entonces me había olvidado de ellas.

Vea la respuesta de Mark Rushakoff, y además, también he usado-Wunsafe-loop-optimizations para advertir explícitamente si GCC está haciendo suposiciones sobre un bucle. Verhttp://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

Respuestas a la pregunta(3)

Su respuesta a la pregunta