http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50564
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-09-29 12:44:16 UTC --- The problem is that with front-end optimization, the forall body is changed from: timeSteps(iTime)=ratio**(dble(iTime)-0.5d0)-ratio**(dble(iTime)-1.5d0) which is a simple assignment (EXEC_ASSIGN) to a block of the form block tmp = dble(iTime) timeSteps(iTime)=ratio**(tmp-0.5) - ratio**(tmp-1.5) end block or something similar (in any case it is an EXEC_BLOCK); however, gfc_trans_forall_1 only handles: EXEC_ASSIGN, EXEC_WHERE, EXEC_POINTER_ASSIGN, EXEC_FORALL and EXEC_ASSIGN_CALL. That matches F2008 (cf. below), though one could allow BLOCK internally. R756 forall-body-construct is forall-assignment-stmt or where-stmt or where-construct or forall-construct or forall-stmt R757 forall-assignment-stmt is assignment-stmt or pointer-assignment-stmt