Artyom
Фотография
нажмите — покажем
нажмите — покажем
Знаете, почему -O2 может молча выбросить вашу проверку на переполнение?
Потому что переполнение знакового целого - это UB. А раз UB быть не может, то и условие, которое срабатывает только при нём, всегда ложно. Ветка мёртвая => можно удалять. Одна и та же программа: -O0 возвращает -1, -O2 возвращает -2147483648.
Разбор реального бага GCC, проверок после разыменования и санитайзеров в статье.
5 · 515 ·