Random LLVM Notes
About

These documents are a random collection of notes that I have made while working on LLVM. None of them are official, they may be gibberish and not make sense, but they also might be useful. Many of these ideas will find their way into LLVM in some form or another, but nothing is guaranteed. :)

If there is something here that interests you, and you would like to see it in LLVM sooner, rather than later, send an email to the LLVMdev list. We would be happy to help you when/if you run into trouble implementing it.

Core IR Notes
  1. Feb 8, 2012 - Better optimization of structure copies.
  2. Feb 22, 2011 - Better way to refer to targets (internal to the compiler).
  3. Sep 24, 2009 - Debug info for variables when optimizing.
  4. Jun 29, 2009 - Global Register Variables.
  5. Jun 15, 2009 - __builtin_unreachable for value assertion information - Implemented in Clang Sep 20, 2009.
  6. May 18, 2009 - Memory lifeness/immutability markers.
  7. Mar 25, 2009 - Extended Integer Function Results.
  8. Sep 19, 2008 - Improving Metadata in LLVM IR (debug info, annotations, TBAA, and front-end extensions).
  9. Apr 26, 2008 - Eliminating the 'Void' Type.
  10. Aug 25, 2004 - Improvements to EH support (PR1269).
  11. Aug 18, 2004 - "Relaxed" Floating Point support.

Completed:

  1. [3.0] Rewrite the LLVM IR Type System.
  2. [2.8] Half-Precision Floating Point.
  3. [2.7] Extensible Metadata in LLVM IR.
  4. [2.7] Indirect Goto Design.
  5. [2.6] Representing and optimizing arithmetic based on integer overflow.
  6. [2.6] LLVM Debug Info Line Numbers when optimization is enabled.
  7. [2.4] Aggregates as First Class Values - Finished July 2008.
  8. [2.3] Adding support for functions with multiple return values (and inline asm) (PR2095) - Finished Apr 2008.
  9. [2.0] Capturing alignment information in LLVM - Finished Apr 2007.
  10. [2.0] Core LLVM Type System Changes - Implemented Dec 2006.
  11. [1.7] Inline Assembly Support - Implemented Feb 2006.
  12. [1.7] CallGraph class cleanups - Implemented Dec 21, 2005.
  13. [1.5] Guaranteed Efficient Tail Calls - Implemented May 14, 2005.
  14. [1.5] Target-specific calling conventions - Implemented May 6, 2005.
  15. [1.4] The new LLVM 'unreachable' instruction - Implemented Oct 18, 2004.
  16. [1.4] New LLVM 'undef' value - Implemented Oct 16, 2004.
Code Generator Notes

Completed:

  1. [2.3] Revamping the LLVM code generator
  2. [1.4] Autogenerated asmwriter notes - Implemented Aug 11, 2004
Optimization Notes
  1. Stuff -instcombine should handle.
  2. Symbolic Constant Folding Opportunities: lib/VMCore/ConstantFolding.cpp

Completed:

  1. [2.0] PassManager improvements and loop optimizer infrastructure notes - Implementation completed in Mar 2007.
  2. [2.0] PassManager improvements for an amazing Inliner - Implementation completed Jan 5, 2007.
  3. [1.5] Notes for interprocedural SCCP (LLVM PR#415) - Implemented Dec 11, 2004.
  4. [1.6] Evaluating static ctors at compile time - Implemented Sep 26, 2005..
Random Source Language Implementation Notes
  1. Jun 24, 2005 - Implementing Portable sizeof, offsetof, and Variable Sized Structures in LLVM
  2. Jul 27, 2004 - MSIL Object Model Implementation - vtables and typeinfo
  3. Jul 27, 2004 - MSIL Object Model Implementation - interfaces
  4. Sep 5, 2004 - Explicitly managed stack frames - e.g. GC'd stack frames.
Benchmarks to add to llvm-test
  1. A variety of C++ benchmarks
  2. BioPerf
  3. SciMark 2.0 (C and Java)
  4. LLC bench
  5. nbench
  6. Robert Scott Ladd's more.
  7. DDJ benchmarks.
  8. DSPstone.
  9. UTDSP: restricted?
  10. Netbench
  11. CAD stuff
  12. MediaBench
  13. SPLASH parallel benchmarks
  14. MiBench
  15. Sparc Benchmarks
  16. SUSAN program
  17. C++ vs Java more more

Valid CSS! Valid
			HTML 4.01! Copyright © 1994-2008 Chris Lattner
Last modified: Wednesday, 08-Feb-2012 02:10:12 PST