Common Subexpression Elimination and Copy Propagation in Titanium Johnathon Jamison David Marin CS265 S. Graham
Jan 19, 2016
Common Subexpression Elimination and Copy
Propagation in TitaniumJohnathon Jamison
David Marin
CS265
S. Graham
Global Copy Propagation
• Given
a = b;
…
x = a + 1;
• We want to replace a with b on the last line, but we need to know that a and b are unchanged
• Def/use analysis isn’t quite enough (why?)
Inserting Fake Defs and Uses
• Add fake defs and uses so that def/use analysis gives us the info we need
b = b;
a = b;
…
newtemp = b;
x = a + 1;• We can use this technique to enable CSE too.
Interaction with Copy Propagation
• Any temps introduced are placed after the calculation, so that copy propagation can remove thema = f * i a = f * i
temp_1 = a… …b = f * i b = temp_1
temp_2 = b… …c = f * i c = temp_2
Local CSE
• Used Muchnick’s algorithm (described in class)
• Used defs to find what was killed
• Fully implemented– Except method calls
• Since we are using defs already, why not so something more substantial?