Skip to content
  • Chris Lattner's avatar
    Completely rearchitect the interface between targets and the pass manager. · 12e97307
    Chris Lattner authored
    This pass:
    
    1. Splits TargetMachine into TargetMachine (generic targets, can be implemented
    any way, like the CBE) and LLVMTargetMachine (subclass of TM that is used by
    things using libcodegen and other support).
    2. Instead of having each target fully populate the passmgr for file or JIT
       output, move all this to common code, and give targets hooks they can
       implement.
    3. Commonalize the target population stuff between file emission and JIT
       emission.
    4. All (native code) codegen stuff now happens in a FunctionPassManager, which
       paves the way for "fast -O0" stuff in the CFE later, and now LLC could
       lazily stream .bc files from disk to use less memory.
    5. There are now many fewer #includes and the targets don't depend on the
       scalar xforms or libanalysis anymore (but codegen does).
    6. Changing common code generator pass ordering stuff no longer requires
       touching all targets.
    7. The JIT now has the option of "-fast" codegen or normal optimized codegen,
       which is now orthogonal to the fact that JIT'ing is being done.
    
    llvm-svn: 30081
    12e97307
Loading