https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51961
--- Comment #3 from janus at gcc dot gnu.org --- (In reply to Dominique d'Humieres from comment #1) > What is allocate supposed to do if the array and the mold are not > conformable? AFAICS the mold expr is normally only used for the type, provided the shape of the allocate-object is specified explicitly, as in Tobias' example: allocate (a(2), mold=b) ! Valid - but not accepted I tend to agree that this might be valid. Then 'a' should be allocated with two elements and using the type from 'b'. However, if the shape is not specified explicitly, then it can be taken from the source-expr (therefore the rank needs to agree) as in this example: allocate (a, mold=b) ! correctly rejected? From F08 section 9.7.1.2: When an ALLOCATE statement is executed for an array with no allocate-shape-spec-list, the bounds of source-expr determine the bounds of the array. Subsequent changes to the bounds of source-expr do not affect the array bounds. I would conclude that this second case is invalid, however this is not reflected in C638, which might possibly be an oversight in Fortran 2008. AFAICS Fortran 2018 changes nothing in this regard.