Чем объясняется «предупреждение: предполагая, что цикл не бесконечен»

Я только что принял решение изменить столько переменных отunsigned вint и после перекомпиляции кода был встречен этим предупреждением:

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

Строка, о которой идет речь:

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

Этот цикл состоит из 60 строк кода (включая пробелы / квадратные скобки и т. Д.) И имеетgoto в нем, и, по крайней мере, один случайcontinue.

В этом случае, я думаю, что я благодарен, что GCC предполагает, что этот цикл не является бесконечным, потому что он никогда не должен выполняться бесконечно.

Что GCC пытается сказать мне здесь?

Грамматика предупреждения почти наводит на мысль о том, что предупреждение следует принимать в контексте какого-либо другого предупреждения, но в этом контексте их нет.

[редактировать] Это все полностью моя вина. Я украл некоторые варианты оптимизации и предупреждения из вопроса где-то здесь, не понимая их, и с тех пор забыл о них.

Смотрите ответ Марка Рушакова, и, кроме того, я также использовал-Wunsafe-loop-optimizations явно предупредить, если GCC делает предположения о цикле. Увидетьhttp://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

Ответы на вопрос(3)

Ваш ответ на вопрос