Warning sobre aliasing en llamadas a procedimientos
Puede ser conveniente implementar algún mecanismo para advertir al programador sobre potenciales problemas de aliasing en llamadas a procedimientos. Debido que un procedimiento puede leer y/o modificar sus entradas, si se invocara a uno con las mismas variables, habría una probabilidad elevada que el programa tenga un comportamiento inesperado. Un ejemplo sobre esta situación es el siguiente:
proc p (in a : int, out b : int)
...
end proc
...
var i : int
...
p(i, i)
En este caso, asumiendo llamada por referencia, si durante la ejecución de p se leyera el valor del input a luego de haber modificado el output b, se estaría observando un valor distinto al que se tenía almacenado en la variable i al comienzo de la ejecución del procedimiento. Esto, obviamente, podría generar un comportamiento inesperado en la ejecució del programa.
Un comentario adicional sobre este aspecto, es que no se pueden capturar todos los problemas de aliasing de forma estática. El uso de punteros, y sus operaciones, solo se podrían analizar de forma dinámica.