http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586
--- Comment #11 from Joost VandeVondele <Joost.VandeVondele at pci dot uzh.ch> 2010-11-25 17:00:19 UTC --- (In reply to comment #10) > Thus, isn't what the program does equivalent to > > REAL(dp), DIMENSION(:, :, :), ALLOCATABLE :: z > REAL(dp), DIMENSION(:, :, :), POINTER :: y > y=>z > > which is invalid? Valid would only be > > REAL(dp), DIMENSION(:, :, :), ALLOCATABLE, TARGET :: z > REAL(dp), DIMENSION(:, :, :), POINTER :: y > y=>z > > ? no, your example here is different, and is not allowed. The original testcase is fine. so y=>a%b%c%d%z is allowed as soon as any of a, b, c, or d or z have the pointer attribute. That z is allocatable doesn't matter.