Он не должен работать и, конечно, не работать на всех компиляторах и целевых ОС, даже если он работает на вашей.
Вероятное объяснение состоит в том, что функция, возвращающая int, всегда что-то возвращает, и обычно это содержимое регистра. Вероятно, случается, что регистр, используемый для возвращаемого значения, в вашем случае аналогичен используемому для вычисления последнего выражения перед возвратом из функции (для целей x86, конечно, eax).
При этом оптимизирующий компилятор, обнаруживающий отсутствие возврата, может полностью удалить код этой функции. Отныне эффект, который вы видите (может), исчезает при активации более высоких уровней оптимизации.
Я проверил это с помощью gcc:
GCC без оптимизации:
входы 10, 20 -> результат 10
gcc -O1
входы 10, 20 -> результат 1
gcc -O2
входы 10, 20 -> результат 0