This is the only sane approach. Small passes are easy to write, easy to understand and easy to reason about.<p>And if yoy worry about performance, your compiler can fuse passes together in many cases.