X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;ds=sidebyside;f=docs%2FWritingAnLLVMPass.html;h=af1ffa4fb7adeb8e3bd26d0b65b68a8467d624f1;hb=fdddf771716a48857a1044abc7917886bf0bf719;hp=dc70d036c8aeb98edb2fb2cc32673918b458a2e4;hpb=0f6d7c0e20a67a0e6be2bff6d4d83cfeb149c17f;p=oota-llvm.git diff --git a/docs/WritingAnLLVMPass.html b/docs/WritingAnLLVMPass.html index dc70d036c8a..af1ffa4fb7a 100644 --- a/docs/WritingAnLLVMPass.html +++ b/docs/WritingAnLLVMPass.html @@ -1,330 +1,443 @@ - -Writing an LLVM Pass - - - - - -
  Writing an LLVM Pass
- + + + + + Writing an LLVM Pass + + + + +

+ Writing an LLVM Pass +

    -
  1. Introduction - What is a pass? +
  2. Introduction - What is a pass?
  3. Quick Start - Writing hello world +
  4. Setting up the build environment
  5. +
  6. Basic code required
  7. +
  8. Running a pass with opt
  9. +
  10. Pass classes and requirements
  11. +
  12. The CallGraphSCCPass class +
  13. The FunctionPass class + &) method
  14. + +
  15. The LoopPass class +
  16. +
  17. The RegionPass class +
  18. The BasicBlockPass class + &) method
  19. +
  20. The MachineFunctionPass class + runOnMachineFunction(MachineFunction &) method
  21. +
  22. Pass Registration +
  23. The print method
  24. +
  25. Specifying interactions between passes +
  26. The getAnalysisUsage + method
  27. +
  28. The AnalysisUsage::addRequired<> and AnalysisUsage::addRequiredTransitive<> methods
  29. +
  30. The AnalysisUsage::addPreserved<> method
  31. +
  32. Example implementations of getAnalysisUsage
  33. +
  34. The getAnalysis<> and +getAnalysisIfAvailable<> methods
  35. +
  36. Implementing Analysis Groups +
  37. Analysis Group Concepts
  38. +
  39. Using RegisterAnalysisGroup
  40. + +
  41. Pass Statistics
  42. What PassManager does +
  43. The releaseMemory method
  44. + +
  45. Registering dynamically loaded passes +
  46. Using GDB with dynamically loaded passes +
  47. Setting a breakpoint in your pass
  48. +
  49. Miscellaneous Problems
  50. +
  51. Future extensions planned - -

    Written by Chris Lattner

    -

- +

  • Multithreaded LLVM
  • + + +
    +

    Written by Chris Lattner and + Jim Laskey

    +
    - -
    -Introduction - What is a pass? -
    -
    -Quick Start - Writing hello world -
    -
       - -Setting up the build environment -


    -
       - -Basic code required -
    -
       - -Running a pass with opt or analyze -
    -
    -Pass classes and requirements -
    -
       - -The ImmutablePass class -
    -
       - -The Pass class -


    The run method

    -
       - -The FunctionPass class -


    The -doInitialization(Module &) method


    The runOnFunction method


    The doFinalization(Module &) method

    -
       - -The BasicBlockPass class -


    The -doInitialization(Function &) method


    The runOnBasicBlock method


    The doFinalization(Function -&) method

    -
       - -The MachineFunctionPass class -


    The -runOnMachineFunction(MachineFunction &MF) method

    -
    -Pass registration -


    The print method

    -
    -Specifying interactions between passes -


    The getAnalysisUsage method


    The getAnalysis<> method

    -
    -Implementing Analysis Groups -


    Analysis Group Concepts


    Using RegisterAnalysisGroup

    -
    -What PassManager does -


    The releaseMemory method

    -
    -Using GDB with dynamically loaded passes -


    Setting a breakpoint in your pass


    Miscellaneous Problems

    -
    -Future extensions planned -


    Multithreaded LLVM


    A new ModuleSource interface


    Pass's requiring FunctionPass's

    - -
    -
    Chris Lattner
    -The LLVM Compiler Infrastructure -
    - - -Last modified: Mon Oct 27 12:00:00 CDT 2003 - -
    +
    +
    + Valid CSS + Valid HTML 4.01 + + Chris Lattner
    + The LLVM Compiler Infrastructure
    + Last modified: $Date$ +
    + + +