/// @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
