That makes more sense now. I’ve asked myself the same question as @Beliavsky before, when I was fixing the issue in the thread:
Nowadays expressions are allowed:
subroutine demo1(n,x)
integer :: n
real :: x(n*n/2)
print *,x
end subroutine
subroutine demo2(x,ipar)
integer :: ipar(7)
real :: x((ipar(1)**2)/2)
print *, x
end subroutine
and an array is allowed to have zero-length which clashes with the (non-standard) v(1) convention.