|
@@ -3014,15 +3014,15 @@ includes the arity.)
|
|
|
\end{tcolorbox}
|
|
|
\end{wrapfigure}
|
|
|
|
|
|
-Based on the liveness analysis, we know where each variable is needed.
|
|
|
-However, during register allocation, we need to answer questions of
|
|
|
-the specific form: are variables $u$ and $v$ live at the same time?
|
|
|
-(And therefore cannot be assigned to the same register.) To make this
|
|
|
-question easier to answer, we create an explicit data structure, an
|
|
|
-\emph{interference graph}\index{interference graph}. An interference
|
|
|
-graph is an undirected graph that has an edge between two variables if
|
|
|
-they are live at the same time, that is, if they interfere with each
|
|
|
-other.
|
|
|
+Based on the liveness analysis, we know where each location is used
|
|
|
+(read from). However, during register allocation, we need to answer
|
|
|
+questions of the specific form: are locations $u$ and $v$ live at the
|
|
|
+same time? (And therefore cannot be assigned to the same register.)
|
|
|
+To make this question easier to answer, we create an explicit data
|
|
|
+structure, an \emph{interference graph}\index{interference graph}. An
|
|
|
+interference graph is an undirected graph that has an edge between two
|
|
|
+locations if they are live at the same time, that is, if they
|
|
|
+interfere with each other.
|
|
|
|
|
|
The most obvious way to compute the interference graph is to look at
|
|
|
the set of live location between each statement in the program and add
|