mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-19 19:29:31 +00:00
The C backend is assumed correct and is used to generate shared objects to be loaded by the other two code generators. LLC debugging should be functional now, LLI needs a few more additions to work, the major one is renaming of external functions to call the JIT lazy function resolver. Bugpoint now has a command-line switch -mode with options 'compile' and 'codegen' to debug appropriate portions of tools. ExecutionDriver.cpp: Added implementations of AbstractInterpreter for LLC and GCC, broke out common code within other tools, and added ability to generate C code with CBE individually, without executing the program, and the GCC tool can generate executables shared objects or executables. If no reference output is specified to Bugpoint, it will be generated with CBE, because it is already assumed to be correct for the purposes of debugging using this method. As a result, many functions now accept as an optional parameter a shared object to be loaded in, if specified. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7293 91177308-0d34-0410-b5e6-96231b3b80d8
35 lines
1.1 KiB
C++
35 lines
1.1 KiB
C++
//===- bugpoint.cpp - The LLVM BugPoint utility ---------------------------===//
|
|
//
|
|
// This program is an automated compiler debugger tool. It is used to narrow
|
|
// down miscompilations and crash problems to a specific pass in the compiler,
|
|
// and the specific Module or Function input that is causing the problem.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "BugDriver.h"
|
|
#include "Support/CommandLine.h"
|
|
#include "llvm/Support/PassNameParser.h"
|
|
|
|
static cl::list<std::string>
|
|
InputFilenames(cl::Positional, cl::OneOrMore,
|
|
cl::desc("<input llvm ll/bc files>"));
|
|
|
|
// The AnalysesList is automatically populated with registered Passes by the
|
|
// PassNameParser.
|
|
//
|
|
static cl::list<const PassInfo*, bool, PassNameParser>
|
|
PassList(cl::desc("Passes available:"), cl::ZeroOrMore);
|
|
|
|
//cl::list<std::string>
|
|
//InputArgv(cl::ConsumeAfter, cl::desc("<program arguments>..."));
|
|
|
|
int main(int argc, char **argv) {
|
|
cl::ParseCommandLineOptions(argc, argv);
|
|
|
|
BugDriver D(argv[0]);
|
|
if (D.addSources(InputFilenames)) return 1;
|
|
D.addPasses(PassList.begin(), PassList.end());
|
|
|
|
return D.run();
|
|
}
|