http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51218
--- Comment #26 from tkoenig at netcologne dot de <tkoenig at netcologne dot de> 2011-11-26 09:22:15 UTC --- Am 25.11.2011 18:44, schrieb burnus at gcc dot gnu.org: > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51218 > > --- Comment #25 from Tobias Burnus<burnus at gcc dot gnu.org> 2011-11-25 > 17:44:29 UTC --- > (In reply to comment #24) >>> Thanks for the bugreport and the (valid) >>> testcase. >> >> To be pedantic, the test case was not valid > > Can you tell me what's wrong with the test case of comment 16? It looks > perfectly valid to me. I'l defer to authority here :-) To quote Dick Hendrickson in the thread ttps://groups.google.com/group/comp.lang.fortran/browse_thread/thread/6dfe2c3088f89725/3f69c230c86db253?hl=de&ie=UTF-8&q=functions+*+side+effects+group:comp.lang.fortran+author:Thomas+author:Koenig#3f69c230c86db253 # In this case, I think the standard is clear. The processor is # allowed to evaluate f(3) once or twice. By the words # Richard quoted, a function is not allowed to affect or be # affected by anything else in the statement. So, one evaluation # of f(3) can't change the result of the other, and the processor # is free to evaluate f(3) + f(3) as 2*f(3). It # is processor dependent. Richard Maine sort of disagreed, he thinks the program is illegal. So, either way, optimizing away a function call would be OK.