https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88685
--- Comment #2 from Antony Lewis <antony at cosmologist dot info> --- I think the individual elements are correct, it's the array indexing operations that are wrong (this is clearer in the longer example; looks a like wrong stride). E.g. printing this in the main program after calling doit print *, arr(1,1)%CL also gives 1, -1, -1.