https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66089
--- Comment #6 from Mikael Morin <mikael at gcc dot gnu.org> --- (In reply to vehre from comment #5) For the interpretation of (intrinsic) assignment, you have to look at 7.2.1.3: > The execution of the assignment shall have the same effect as if the > evaluation of expr and the evaluation of all expressions in variable > occurred before any portion of the variable is defined by the assignment This, together with what you already quoted: > Let's have a look at the standard (F2008, 12.8.2, last sentence): > > In the array case, the values of the elements, if any, of the result are > the same as would have been obtained if the scalar function had been applied > separately, in array element order, to corresponding elements of each array > actual argument. > gives as interpretation: (<result>(i)= plus(c(1), b(i)), i = 1, size(c)) (c(i) = <result>(i), i=1,size(c)) which gives the same result as your second interpretation.