A method for modifying serial dependencies in a procedure includes a step
of building a graph representation of the procedure. The graph
representation has an origin as well as a unique position, relative to
the origin, for each memory operation in the procedure. Each memory
operation in the representation is designated with a location type. Each
of these location types are based on one or more characteristics of the
corresponding memory operation that are sufficient to notify the compiler
that the memory operation accesses a distinct or disjoint memory
location. Memory operations having the same location type as subsequent
memory operations are identified. When the graph representation does not
include additional memory operations of the same location type between
pairs of such memory operations, the subsequent memory operation is moved
to a position in the intermediate representation that is closer to the
origin.