X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FOpenProjects.html;h=ebf28abb728f0f5b174b300fd3218f9b7a33cbe7;hb=4573f1b8cf61890c25f85952221d243e05e5474f;hp=303cb2a37aefa67c52cacc4d2b92dd4cf0f60760;hpb=2d26135b90305721e2ddbb854881682fe460f44e;p=oota-llvm.git diff --git a/docs/OpenProjects.html b/docs/OpenProjects.html index 303cb2a37ae..ebf28abb728 100644 --- a/docs/OpenProjects.html +++ b/docs/OpenProjects.html @@ -15,8 +15,8 @@
  • What is this?
  • Improving the current system
      +
    1. Implementing Code Cleanup bugs
    2. Port glibc to LLVM
    3. -
    4. Improving the Nightly Tester
    5. Compile programs with the LLVM Compiler
    6. Extend the LLVM intermediate representation
    7. Miscellaneous Improvements
    8. @@ -24,6 +24,7 @@
    9. Adding new capabilities to LLVM
        +
      1. Implementing new feature PRs
      2. Pointer and Alias Analysis
      3. Profile Guided Optimization
      4. New Transformations and Analyses
      5. @@ -32,6 +33,11 @@
    10. +
      +

      Written by the LLVM Team

      +
      + +
      What is this? @@ -55,13 +61,9 @@ Additionally this is a good way to get more information about a specific project or to suggest other projects to add to this page.

      -

      The projects in this page are open ended. More specific projects are -filed as unassigned enhancements in our -LLVM bug tracker. Here is the current list: -

      - - +

      The projects in this page are open-ended. More specific projects are +filed as unassigned enhancements in the +LLVM bug tracker. See the list of currently outstanding issues if you wish to help improve LLVM.

      @@ -81,36 +83,34 @@ can use improvement...

      -

      It would be very useful to port glibc to LLVM. This would allow a -variety of interprocedural algorithms to be much more effective in the face of -library calls. The most important pieces to port are things like the string -library and the stdio related functions... low-level system calls like -'read' should stay unimplemented in LLVM.

      +

      +The LLVM bug tracker occasionally +has "code-cleanup" bugs filed in it. Taking one of these and fixing it is a good +way to get your feet wet in the LLVM code and discover how some of its components +work. +

      -

      The Nightly Tester is a simple perl script -(located in utils/NightlyTest.pl) which runs every night to generate a -daily report. It could use the following improvements:

      - -
        -
      1. Regression tests - We should run the regression tests in addition to the - program tests...
      2. -
      +

      It would be very useful to port glibc to LLVM. This would allow a +variety of interprocedural algorithms to be much more effective in the face of +library calls. The most important pieces to port are things like the string +library and the stdio related functions... low-level system calls like +'read' should stay unimplemented in LLVM.

      @@ -194,6 +194,18 @@ also be very rewarding.

      + + + + +
      + +

      Many ideas for feature requests are stored in LLVM bugzilla. Just search for bugs with a "new-feature" keyword.

      + +
      +
      Pointer and Alias Analysis @@ -213,9 +225,6 @@ themselves. It seems natural to want to take advantage of this...

    11. Implement a flow-sensitive context-insensitive alias analysis algorithm
      - Just an efficient local algorithm perhaps?
    12. -
    13. Implement an interface to update analyses in response to common code motion - transformations
    14. -
    15. Implement alias-analysis-based optimizations:
      • Dead store elimination
      • @@ -279,8 +288,6 @@ profiling code to work with the generic profiling interfaces. - Design some way to represent and query dep analysis
      • Implement a strength reduction pass
      • Value range propagation pass
      • -
      • Implement an unswitching pass
      • -
      • Write a loop unroller, with a simple heuristic for when to unroll
    @@ -296,6 +303,10 @@ profiling code to work with the generic profiling interfaces.
  • Implement a better instruction selector
  • Implement support for the "switch" instruction without requiring the lower-switches pass.
  • +
  • Implement interprocedural register allocation. The CallGraphSCCPass can be + used to implement a bottom-up analysis that will determine the *actual* + registers clobbered by a function. Use the pass to fine tune register usage + in callers based on *actual* registers used by the callee.
  • @@ -315,6 +326,8 @@ bytecode, JVM bytecode, and C, so LLVM would ostensibly be another good candidate.
  • Write a new frontend for some other language (Java? OCaml? Forth?)
  • Write a new backend for a target (IA64? MIPS? MMIX?)
  • +
  • Write a disassembler for machine code that would use TableGen to output +MachineInstrs for transformations, optimizations, etc.
  • Random test vector generator: Use a C grammar to generate random C code; run it through llvm-gcc, then run a random set of passes on it using opt. Try to crash opt. When opt crashes, use bugpoint to reduce the test case and @@ -327,12 +340,16 @@ mail the result to yourself. Repeat ad infinitum.

  • - +