https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85557
--- Comment #2 from Evgeniy Shcherbina <ixsci at yandex dot ru> --- There is 2 parameter calculations: "first" and "second", no matter what is evaluated first or second, the "first" parameter should be initialized with `i = 1`, and "second" with `i = 2`. So "first" should always be equal to 1 and "second" to 2. Currently it works as if the value assignment to parameters is done after the both arguments are calculated which to my knowledge is wrong. Argument calculation and parameter assignment is an atomic step as far as other parameters are concerned.