The mere existence of aliased dummy arguments, when two or more formal arguments to a subprogram have portions that occupy the same memory locations, need not be a problem as far as correct operation of the code is concerned. (Performance may be affected because of cache issues, but the results should be correct.)
Problems may occur when one aliased variable is assigned new values, and its partner in crime is used later in an expression.
For a nice example of how confusing it can get when aliasing exists, see Robert Corbett’s post in C.L.F. a decade ago.