summaryrefslogtreecommitdiff
path: root/tools/llc
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-02-26 21:36:53 +0000
committerChris Lattner <sabre@nondot.org>2002-02-26 21:36:53 +0000
commit4ddcd54751f10234be148b648f3986446ffafc54 (patch)
treec0a9e4c26729191312704596287439292824b850 /tools/llc
parenteded4916d6679a8c42e5f16d022afe0252c2df8e (diff)
downloadllvm-4ddcd54751f10234be148b648f3986446ffafc54.tar.gz
llvm-4ddcd54751f10234be148b648f3986446ffafc54.tar.bz2
llvm-4ddcd54751f10234be148b648f3986446ffafc54.tar.xz
* Make all command line arguments static
* Change -trace & -tracem options to use a 3 values enum option * Change to use new style interface to passes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1813 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llc')
-rw-r--r--tools/llc/llc.cpp38
1 files changed, 24 insertions, 14 deletions
diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp
index d35d5d9967..c4422adfba 100644
--- a/tools/llc/llc.cpp
+++ b/tools/llc/llc.cpp
@@ -22,14 +22,20 @@
#include <fstream>
using std::string;
-cl::String InputFilename ("", "Input filename", cl::NoFlags, "-");
-cl::String OutputFilename("o", "Output filename", cl::NoFlags, "");
-cl::Flag Force ("f", "Overwrite output files");
-cl::Flag DumpAsm ("d", "Print bytecode before native code generation",
- cl::Hidden);
-cl::Flag TraceBBValues ("trace",
- "Trace values at basic block and method exits");
-cl::Flag TraceMethodValues("tracem", "Trace values only at method exits");
+static cl::String InputFilename ("", "Input filename", cl::NoFlags, "-");
+static cl::String OutputFilename("o", "Output filename", cl::NoFlags, "");
+static cl::Flag Force ("f", "Overwrite output files");
+static cl::Flag DumpAsm ("d", "Print bytecode before native code generation", cl::Hidden);
+
+enum TraceLevel {
+ TraceOff, TraceMethods, TraceBasicBlocks
+};
+
+static cl::Enum<enum TraceLevel> TraceValues("trace", cl::NoFlags,
+ "Trace values through methods or basic blocks",
+ clEnumValN(TraceOff , "off", "Disable trace code"),
+ clEnumValN(TraceMethods , "method", "Trace each method"),
+ clEnumValN(TraceBasicBlocks, "basicblock", "Trace each basic block"), 0);
// GetFileNameRoot - Helper function to get the basename of a filename...
@@ -73,15 +79,19 @@ int main(int argc, char **argv) {
PassManager Passes;
// Hoist constants out of PHI nodes into predecessor BB's
- Passes.add(new HoistPHIConstants());
+ Passes.add(createHoistPHIConstantsPass());
- if (TraceBBValues || TraceMethodValues) { // If tracing enabled...
+ if (TraceValues != TraceOff) { // If tracing enabled...
// Insert trace code in all methods in the module
- Passes.add(new InsertTraceCode(TraceBBValues,
- TraceBBValues ||TraceMethodValues));
+ if (TraceValues == TraceBasicBlocks)
+ Passes.add(createTraceValuesPassForBasicBlocks());
+ else if (TraceValues == TraceMethods)
+ Passes.add(createTraceValuesPassForMethod());
+ else
+ assert(0 && "Bad value for TraceValues!");
// Eliminate duplication in constant pool
- Passes.add(new DynamicConstantMerge());
+ Passes.add(createDynamicConstantMergePass());
// Then write out the module with tracing code before code generation
assert(InputFilename != "-" &&
@@ -109,7 +119,7 @@ int main(int argc, char **argv) {
// Replace malloc and free instructions with library calls.
// Do this after tracing until lli implements these lib calls.
// For now, it will emulate malloc and free internally.
- Passes.add(new LowerAllocations(Target.DataLayout));
+ Passes.add(createLowerAllocationsPass(Target.DataLayout));
// If LLVM dumping after transformations is requested, add it to the pipeline
if (DumpAsm)