abstract syntax tree cpu cache call site compiler compiler optimization computing constant control flow copy and paste programming dead code elimination embedded system executable functional programming halting problem infinite regress inline function intermediate representation lambda calculus link-time optimization linker locality of reference loop-invariant code motion object-oriented programming language parameter parameterized macro partial evaluation performance processor register return statement run-time system simon peyton jones source code undecidable wiktionary