/// @mainpage Low Level Virtual Machine
///
/// @section main_intro Introduction
/// Welcome to the Low Level Virtual Machine (LLVM).
///
/// This documentation describes the @b internal software that makes 
/// up LLVM, not the @b external use of  LLVM. There are no instructions
/// here on how to use LLVM, only the APIs that make up the software. For usage 
/// instructions, please see the programmer's guide or reference manual.
///
/// @section main_caveat Caveat 
/// This documentation is generated directly from the source code with doxygen. 
/// Since LLVM is constantly under active development, what you're about to
/// read is out of date! However, it may still be useful since certain portions
/// of LLVM are very stable. 
///
/// @section main_changelog Change Log
/// - Original content written 12/30/2003 by Reid Spencer
