250 likes | 378 Views
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
E N D
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; • 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 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?