https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63535
--- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> --- Wording from 22-007: "19.5.1.6 Construct association "Execution of a SELECT RANK or SELECT TYPE statement establishes an association between the selector and the associate name of the construct. Execution of an ASSOCIATE or CHANGE TEAM statement establishes an association between each selector and the corresponding associate name of the construct. In an ASSOCIATE or SELECT TYPE construct, the following rules apply. • If a selector is allocatable, it shall be allocated; the associate name is associated with the data object and does not have the ALLOCATABLE attribute. • If a selector has the POINTER attribute, it shall be associated; the associate name is associated with the target of the pointer and does not have the POINTER attribute." * * * This partially works - for 'allocated', there is an error but for '(de)allocate' there isn't. My bet is that that's due to CLASS having the pointer attribute (but not the class_pointer attribute).