https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66578
--- Comment #3 from vehre at gcc dot gnu.org --- Strictly speaking has this not much to do with the renewed allocate(). The pseudo code shows that with and without the block construct the offset of the source array's temporary descriptor is computed to be zero, while the lbound is one. This would lead to a memory issue in either case, wouldn't the program w/o the block construct not compute the temporary offset for addressing the elements w/o respect to the descriptor's offset (by using the negative lbound).