https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123782

--- Comment #1 from Ivan Pribec <ivan.pribec at gmail dot com> ---
Here are a few ways to determine the contiguity:

print *, is_contiguous(a)
print *, is_contiguous(a(:)%x)
print *, sizeof(0.0) == (loc(a(2)) - loc(a(1)))
associate(x => a%x)
  print *, sizeof(0.0) == (loc(x(2)) - loc(x(1)))
end associate

The output produced is 

T
F
T
T

No temporaries are created (checked with -fcheck=array-temps). It looks like
the contiguous property is lost in the array component selection expression
a%x.

Reply via email to