Здравствуйте, watchmaker, Вы писали:
W>Патч именно исправляет проблему с UB в мёртвом коде, который считается живым из-за ошибки в оптимизаторе циклов. Так, до патча компилятор выносил инвариант из цикла, который мог приводить к UB, но не приводил из-за того, что цикл никогда не выполнялся (а в исходном примере темы ситуация, грубо говоря, обратная — цикл-то выполняется). После патча компилятор по прежнему может выносить инвариант из цикла, но только предварительно преобразовав его в вариант без UB.
W>А саму проблему, о которой рассказано в комментарии №9, там не чинят, ибо она уже давным-давно разрешена. И решение — использовать -fno-strict-overflow.
Да, действительно, там сначала запостили фикс, который починил бы эту проблему, но потом сделали по-другому, а я решил что довели до ума.