This downcasting to MutableFile in every Pass seems wrong. If every Pass has to do it, then why not make the parameter MutableFile and have the one caller do the downcast. What problem is this solving? http://llvm-reviews.chandlerc.com/D1967