Optimizer can't remove unused code without side effects

Unfortunately this needs some more work in the compiler. It requires that

  1. DeadObjectElimination supports OSSA
  2. We further propagate OSSA down the optimizer pipeline - after the first inlining pass.

Do you mind filing another github issue for this?