diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-08-10 16:29:18 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-08-10 16:29:18 +0000 |
commit | abf1ce3c4ea167e16b88f4e9bf02cd161da3a6dd (patch) | |
tree | 4185197221b9d183dfae8ad03c01e3c4b71d3486 /tools/llvmc/CompilerDriver.h | |
parent | 8fd3bca95762365fca12b9353567d99d2520684c (diff) | |
download | external_llvm-abf1ce3c4ea167e16b88f4e9bf02cd161da3a6dd.tar.gz external_llvm-abf1ce3c4ea167e16b88f4e9bf02cd161da3a6dd.tar.bz2 external_llvm-abf1ce3c4ea167e16b88f4e9bf02cd161da3a6dd.zip |
Move CompilerDriver.h here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15609 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvmc/CompilerDriver.h')
-rw-r--r-- | tools/llvmc/CompilerDriver.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tools/llvmc/CompilerDriver.h b/tools/llvmc/CompilerDriver.h new file mode 100644 index 0000000000..d56c9b5b6b --- /dev/null +++ b/tools/llvmc/CompilerDriver.h @@ -0,0 +1,75 @@ +//===- CompilerDriver.h - Compiler Driver ---------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by Reid Spencer and is distributed under the +// University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file declares the CompilerDriver class which implements the bulk of the +// LLVM Compiler Driver program (llvmc). +// +//===------------------------------------------------------------------------=== + +namespace llvm { + /// This class provides the high level interface to the LLVM Compiler Driver. + /// The driver's purpose is to make it easier for compiler writers and users + /// of LLVM to utilize the compiler toolkits and LLVM toolset by learning only + /// the interface of one program (llvmc). + /// + /// @see llvmc.cpp + /// @brief The interface to the LLVM Compiler Driver. + class CompilerDriver { + /// @name Types + /// @{ + public: + typedef unsigned OptimizationLevel; + enum Phases { + PREPROCESSING, ///< Source language combining, filtering, substitution + TRANSLATION, ///< Translate source -> LLVM bytecode/assembly + OPTIMIZATION, ///< Optimize translation result + LINKING, ///< Link bytecode and native code + ASSEMBLY, ///< Convert program to executable + }; + + enum OptimizationLevels { + OPT_NONE, + OPT_FAST_COMPILE, + OPT_SIMPLE, + OPT_AGGRESSIVE, + OPT_LINK_TIME, + OPT_AGGRESSIVE_LINK_TIME + }; + + /// @} + /// @name Constructors + /// @{ + public: + CompilerDriver(); + + /// @} + /// @name Accessors + /// @{ + public: + void execute(); ///< Execute the actions requested + + /// @} + /// @name Mutators + /// @{ + public: + /// @brief Set the optimization level for the compilation + void setOptimization( OptimizationLevel level ); + void setFinalPhase( Phases phase ); + + /// @} + /// @name Data + /// @{ + public: + Phases finalPhase; + OptimizationLevel optLevel; + + /// @} + + }; +} |