Contents

An access path: the l-value of an expression that is constructed from variables, pointer dereference operators, and structure field selection operators.

For C: "*" deference, "." field selection, "->" dereference and field selection

Aliasing occurs when there exists more than one access path to a storage location. An access path is the l-value of an expression constructed from variables, pointer indirection operators, and structure field selection operators. For e.g., in C it includes ‘*’ dereference operator, ‘.’, ‘->’ operator etc. Consider the following statement:

p = &r;

After this statement, *p and r refer to the same storage location and thus become aliases of each other, which can be expressed as the relation <*p, r>.

Two access paths are

a must-alias at a statement S if they refer to the same storage locations in all execution instances of S.

a may-aliases at S if they refer to the same storage location at some execution instance of S.

Trivial alias <x, x> holds for all access paths x, provided x does not result in a dereference of the null pointer.