2. Inlining a call (from procedure f to g) changes the body of f. How does this change the data-flow information in f? Give concrete examples using an analysis of your choice.
3. Loop unrolling replaces the body of a loop by several copies of the
body and adjusts the loop-control code accordingly. For example,
for i := 1 to 100 do
t := t + Inv
s := s + t + a[i]
becomes (after unrolling it once)
for i := 1 by 2 to 99 do
t := t + Inv
s := s + t + a[i]
t := t + Inv
s := s + t + a[i+1]
Assume that Inv is loop invariant. Convert the original and the unrolled loop into a low-level representation that makes the operations involved in array references explicit. List the induction variables (basic and dependent) in the original and unrolled code (you may split variables if needed). Perform strength reduction and linear-function test replacement on the original and unrolled code.