[llvm-commits] CVS: llvm/tools/llc/Makefile llc.cpp
Chris Lattner
lattner at cs.uiuc.edu
Tue May 27 16:24:01 PDT 2003
Changes in directory llvm/tools/llc:
Makefile updated: 1.34 -> 1.35
llc.cpp updated: 1.71 -> 1.72
---
Log message:
Remove ugly hack (that I put in originally) for building in trace stuff
automatically in LLC
---
Diffs of the changes:
Index: llvm/tools/llc/Makefile
diff -u llvm/tools/llc/Makefile:1.34 llvm/tools/llc/Makefile:1.35
--- llvm/tools/llc/Makefile:1.34 Sun Jan 19 15:55:43 2003
+++ llvm/tools/llc/Makefile Tue May 27 16:23:02 2003
@@ -9,11 +9,9 @@
preopts \
postopts.a \
target.a \
- instrument \
livevar \
- ipo.a \
- scalaropts.a \
transforms.a \
+ scalaropts.a \
analysis.a \
transformutils.a \
bcreader \
Index: llvm/tools/llc/llc.cpp
diff -u llvm/tools/llc/llc.cpp:1.71 llvm/tools/llc/llc.cpp:1.72
--- llvm/tools/llc/llc.cpp:1.71 Sun Apr 27 22:28:56 2003
+++ llvm/tools/llc/llc.cpp Tue May 27 16:23:02 2003
@@ -7,12 +7,8 @@
#include "llvm/Bytecode/Reader.h"
#include "llvm/Target/TargetMachineImpls.h"
#include "llvm/Target/TargetMachine.h"
-#include "llvm/Transforms/Instrumentation.h"
#include "llvm/Transforms/Scalar.h"
-#include "llvm/Transforms/Utils/Linker.h"
#include "llvm/Assembly/PrintModulePass.h"
-#include "llvm/Bytecode/WriteBytecodePass.h"
-#include "llvm/Transforms/IPO.h"
#include "llvm/Module.h"
#include "llvm/PassManager.h"
#include "llvm/Pass.h"
@@ -57,16 +53,6 @@
DumpAsm("d", cl::desc("Print bytecode before native code generation"),
cl::Hidden);
-static cl::opt<std::string>
-TraceLibPath("tracelibpath", cl::desc("Path to libinstr for trace code"),
- cl::value_desc("directory"), cl::Hidden);
-
-
-// flags set from -tracem and -trace options to control tracing
-static bool TraceFunctions = false;
-static bool TraceBasicBlocks = false;
-
-
// GetFileNameRoot - Helper function to get the basename of a filename...
static inline std::string
GetFileNameRoot(const std::string &InputFilename)
@@ -82,81 +68,6 @@
return outputFilename;
}
-static bool
-insertTraceCodeFor(Module &M)
-{
- PassManager Passes;
-
- // Insert trace code in all functions in the module
- if (TraceBasicBlocks)
- Passes.add(createTraceValuesPassForBasicBlocks());
- else if (TraceFunctions)
- Passes.add(createTraceValuesPassForFunction());
- else
- return false;
-
- // Eliminate duplication in constant pool
- Passes.add(createConstantMergePass());
-
- // Run passes to insert and clean up trace code...
- Passes.run(M);
-
- std::string ErrorMessage;
-
- // Load the module that contains the runtime helper routines neccesary for
- // pointer hashing and stuff... link this module into the program if possible
- //
- Module *TraceModule = ParseBytecodeFile(TraceLibPath+"libinstr.bc");
-
- // Check if the TraceLibPath contains a valid module. If not, try to load
- // the module from the current LLVM-GCC install directory. This is kindof
- // a hack, but allows people to not HAVE to have built the library.
- //
- if (TraceModule == 0)
- TraceModule = ParseBytecodeFile("/home/vadve/lattner/cvs/gcc_install/lib/"
- "gcc-lib/llvm/3.1/libinstr.bc");
-
- // If we still didn't get it, cancel trying to link it in...
- if (TraceModule == 0)
- std::cerr <<"WARNING: couldn't load trace routines to link into program!\n";
- else
- {
- // Link in the trace routines... if this fails, don't panic, because the
- // compile should still succeed, but the native linker will probably fail.
- //
- std::auto_ptr<Module> TraceRoutines(TraceModule);
- if (LinkModules(&M, TraceRoutines.get(), &ErrorMessage))
- std::cerr << "WARNING: Error linking in trace routines: "
- << ErrorMessage << "\n";
- }
-
- // Write out the module with tracing code just before code generation
- assert (InputFilename != "-"
- && "Cannot write out traced bytecode when reading input from stdin");
- std::string TraceFilename = GetFileNameRoot(InputFilename) + ".trace.bc";
-
- std::ofstream Out(TraceFilename.c_str());
- if (!Out.good())
- std::cerr << "Error opening '" << TraceFilename
- << "'!: Skipping output of trace code as bytecode\n";
- else
- {
- std::cerr << "Emitting trace code to '" << TraceFilename
- << "' for comparison...\n";
- WriteBytecodeToFile(&M, Out);
- }
-
- return true;
-}
-
-// Making tracing a module pass so the entire module with tracing
-// can be written out before continuing.
-struct InsertTracingCodePass: public Pass {
- virtual bool run(Module &M) {
- return insertTraceCodeFor(M);
- }
-};
-
//===---------------------------------------------------------------------===//
// Function main()
@@ -194,36 +105,27 @@
// Create a new optimization pass for each one specified on the command line
// Deal specially with tracing passes, which must be run differently than opt.
//
- for (unsigned i = 0; i < OptimizationList.size(); ++i)
- {
- const PassInfo *Opt = OptimizationList[i];
-
- if (std::string(Opt->getPassArgument()) == "trace")
- TraceFunctions = !(TraceBasicBlocks = true);
- else if (std::string(Opt->getPassArgument()) == "tracem")
- TraceFunctions = !(TraceBasicBlocks = false);
- else
- { // handle other passes as normal optimization passes
- if (Opt->getNormalCtor())
- Passes.add(Opt->getNormalCtor()());
- else if (Opt->getTargetCtor())
- Passes.add(Opt->getTargetCtor()(Target));
- else
- std::cerr << argv[0] << ": cannot create pass: "
- << Opt->getPassName() << "\n";
- }
- }
-
- // Run tracing passes after other optimization passes and before llc passes.
- if (TraceFunctions || TraceBasicBlocks)
- Passes.add(new InsertTracingCodePass);
+ for (unsigned i = 0; i < OptimizationList.size(); ++i) {
+ const PassInfo *Opt = OptimizationList[i];
+
+ // handle other passes as normal optimization passes
+ if (Opt->getNormalCtor())
+ Passes.add(Opt->getNormalCtor()());
+ else if (Opt->getTargetCtor())
+ Passes.add(Opt->getTargetCtor()(Target));
+ else
+ std::cerr << argv[0] << ": cannot create pass: "
+ << Opt->getPassName() << "\n";
+ }
// Decompose multi-dimensional refs into a sequence of 1D refs
+ // FIXME: This is sparc specific!
Passes.add(createDecomposeMultiDimRefsPass());
// 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.
+ // FIXME: This is sparc specific!
Passes.add(createLowerAllocationsPass());
// If LLVM dumping after transformations is requested, add it to the pipeline
More information about the llvm-commits
mailing list