diff options
author | Chris Lattner <sabre@nondot.org> | 2003-06-17 15:43:13 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-06-17 15:43:13 +0000 |
commit | 97ac14f33cc8fed7f34cb8c7199ef42be124de7e (patch) | |
tree | f2906f7f7b6f8a741f850de40bb763e8b4a43a1b /lib/ExecutionEngine/JIT/JIT.cpp | |
parent | 7aefa966cdeaf054922de341a1e36b4fceee08ce (diff) |
Use more structured command line option processing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6742 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/ExecutionEngine/JIT/JIT.cpp')
-rw-r--r-- | lib/ExecutionEngine/JIT/JIT.cpp | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/lib/ExecutionEngine/JIT/JIT.cpp b/lib/ExecutionEngine/JIT/JIT.cpp index 5a3245b91b..229754775c 100644 --- a/lib/ExecutionEngine/JIT/JIT.cpp +++ b/lib/ExecutionEngine/JIT/JIT.cpp @@ -15,18 +15,23 @@ #include "llvm/PassManager.h" namespace { - cl::opt<std::string> - Arch("march", cl::desc("Architecture: `x86' or `sparc'"), cl::Prefix, - cl::value_desc("machine architecture")); - - static std::string DefaultArch = + enum ArchName { nojit, x86, sparc }; + + cl::opt<ArchName> + Arch("march", cl::desc("Architecture to JIT to:"), cl::Prefix, + cl::values(clEnumVal(x86, " IA-32 (pentium and above)"), +#if defined(sparc) || defined(__sparc__) || defined(__sparcv9) + clEnumVal(sparc, " Sparc-V9"), +#endif + 0), #if defined(i386) || defined(__i386__) || defined(__x86__) - "x86"; + cl::init(x86) #elif defined(sparc) || defined(__sparc__) || defined(__sparcv9) - "sparc"; + cl::init(sparc) #else - ""; + cl::init(nojit) #endif + ); } /// createJIT - Create an return a new JIT compiler if there is one available @@ -35,30 +40,31 @@ namespace { ExecutionEngine *ExecutionEngine::createJIT(Module *M, unsigned Config) { TargetMachine* (*TargetMachineAllocator)(unsigned) = 0; - if (Arch == "") - Arch = DefaultArch; // Allow a command-line switch to override what *should* be the default target // machine for this platform. This allows for debugging a Sparc JIT on X86 -- // our X86 machines are much faster at recompiling LLVM and linking lli. - if (Arch == "x86") { + switch (Arch) { + case x86: TargetMachineAllocator = allocateX86TargetMachine; + break; #if defined(sparc) || defined(__sparc__) || defined(__sparcv9) - } else if (Arch == "sparc") { + case sparc: TargetMachineAllocator = allocateSparcTargetMachine; + break; #endif - } - - if (TargetMachineAllocator) { - // Allocate a target... - TargetMachine *Target = (*TargetMachineAllocator)(Config); - assert(Target && "Could not allocate target machine!"); - - // Create the virtual machine object... - return new VM(M, Target); - } else { + default: + assert(0 && "-march flag not supported on this host!"); + case nojit: return 0; } + + // Allocate a target... + TargetMachine *Target = (*TargetMachineAllocator)(Config); + assert(Target && "Could not allocate target machine!"); + + // Create the virtual machine object... + return new VM(M, Target); } VM::VM(Module *M, TargetMachine *tm) : ExecutionEngine(M), TM(*tm) { |