Common Subexpression Elimination and Copy Propagation in Titanium Johnathon 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;
Interaction with Copy Propagation Any temps introduced are placed after the calculation, so that copy propagation can remove them a = 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?