I can’t see how a BLOCK construct can “dealias” an object…
Regarding the ASSOCIATE construct, in 11.1.3.3 one can read:
Within an ASSOCIATE […] construct, […]. The associating entity does not have the ALLOCATABLE or POINTER attributes; it has the TARGET attribute if and only if the selector is a variable and has either the TARGET or POINTER attribute.
In other words:
real, pointer :: x(:)
...
ASSOCIATE( y => x )
! y has implicitely the TARGET attribute here, and is therefore
! considered as potentially aliased by the compiler
END ASSOCIATE