This pass runs after propagation, so that it can expand type predicates; these cannot be expanded before propagation since we need to see 'fixnum?' instead of 'tag 0 eq?' and so on, for semantic reasoning.
We also delete empty stack shuffles and copies to facilitate tail call optimization in the code generator.