mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-30 17:33:24 +00:00
Add command line option --gcc to bugpoint.
Remove sending duplicate of the --gcc-tool-args parameters to gcc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103397 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ad017dcb3a
commit
faa95763eb
@ -118,6 +118,10 @@ namespace {
|
||||
cl::desc("<safe-tool arguments>..."),
|
||||
cl::ZeroOrMore, cl::PositionalEatsArgs);
|
||||
|
||||
cl::opt<std::string>
|
||||
GCCBinary("gcc", cl::init("gcc"),
|
||||
cl::desc("The gcc binary to use. (default 'gcc')"));
|
||||
|
||||
cl::list<std::string>
|
||||
GCCToolArgv("gcc-tool-args", cl::Positional,
|
||||
cl::desc("<gcc-tool arguments>..."),
|
||||
@ -143,8 +147,8 @@ bool BugDriver::initializeExecutionEnvironment() {
|
||||
case AutoPick:
|
||||
InterpreterSel = RunCBE;
|
||||
Interpreter =
|
||||
AbstractInterpreter::createCBE(getToolName(), Message, &ToolArgv,
|
||||
&GCCToolArgv);
|
||||
AbstractInterpreter::createCBE(getToolName(), Message, GCCBinary,
|
||||
&ToolArgv, &GCCToolArgv);
|
||||
if (!Interpreter) {
|
||||
InterpreterSel = RunJIT;
|
||||
Interpreter = AbstractInterpreter::createJIT(getToolName(), Message,
|
||||
@ -153,7 +157,8 @@ bool BugDriver::initializeExecutionEnvironment() {
|
||||
if (!Interpreter) {
|
||||
InterpreterSel = RunLLC;
|
||||
Interpreter = AbstractInterpreter::createLLC(getToolName(), Message,
|
||||
&ToolArgv, &GCCToolArgv);
|
||||
GCCBinary, &ToolArgv,
|
||||
&GCCToolArgv);
|
||||
}
|
||||
if (!Interpreter) {
|
||||
InterpreterSel = RunLLI;
|
||||
@ -173,7 +178,8 @@ bool BugDriver::initializeExecutionEnvironment() {
|
||||
case RunLLCIA:
|
||||
case LLC_Safe:
|
||||
Interpreter = AbstractInterpreter::createLLC(getToolName(), Message,
|
||||
&ToolArgv, &GCCToolArgv,
|
||||
GCCBinary, &ToolArgv,
|
||||
&GCCToolArgv,
|
||||
InterpreterSel == RunLLCIA);
|
||||
break;
|
||||
case RunJIT:
|
||||
@ -183,7 +189,8 @@ bool BugDriver::initializeExecutionEnvironment() {
|
||||
case RunCBE:
|
||||
case CBE_bug:
|
||||
Interpreter = AbstractInterpreter::createCBE(getToolName(), Message,
|
||||
&ToolArgv, &GCCToolArgv);
|
||||
GCCBinary, &ToolArgv,
|
||||
&GCCToolArgv);
|
||||
break;
|
||||
case Custom:
|
||||
Interpreter = AbstractInterpreter::createCustom(Message, CustomExecCommand);
|
||||
@ -209,6 +216,7 @@ bool BugDriver::initializeExecutionEnvironment() {
|
||||
SafeInterpreterSel = RunLLC;
|
||||
SafeToolArgs.push_back("--relocation-model=pic");
|
||||
SafeInterpreter = AbstractInterpreter::createLLC(Path.c_str(), Message,
|
||||
GCCBinary,
|
||||
&SafeToolArgs,
|
||||
&GCCToolArgv);
|
||||
}
|
||||
@ -219,6 +227,7 @@ bool BugDriver::initializeExecutionEnvironment() {
|
||||
SafeInterpreterSel = RunLLC;
|
||||
SafeToolArgs.push_back("--relocation-model=pic");
|
||||
SafeInterpreter = AbstractInterpreter::createLLC(Path.c_str(), Message,
|
||||
GCCBinary,
|
||||
&SafeToolArgs,
|
||||
&GCCToolArgv);
|
||||
}
|
||||
@ -230,6 +239,7 @@ bool BugDriver::initializeExecutionEnvironment() {
|
||||
InterpreterSel != RunCBE) {
|
||||
SafeInterpreterSel = RunCBE;
|
||||
SafeInterpreter = AbstractInterpreter::createCBE(Path.c_str(), Message,
|
||||
GCCBinary,
|
||||
&SafeToolArgs,
|
||||
&GCCToolArgv);
|
||||
}
|
||||
@ -239,6 +249,7 @@ bool BugDriver::initializeExecutionEnvironment() {
|
||||
SafeInterpreterSel = RunLLC;
|
||||
SafeToolArgs.push_back("--relocation-model=pic");
|
||||
SafeInterpreter = AbstractInterpreter::createLLC(Path.c_str(), Message,
|
||||
GCCBinary,
|
||||
&SafeToolArgs,
|
||||
&GCCToolArgv);
|
||||
}
|
||||
@ -251,13 +262,13 @@ bool BugDriver::initializeExecutionEnvironment() {
|
||||
case RunLLCIA:
|
||||
SafeToolArgs.push_back("--relocation-model=pic");
|
||||
SafeInterpreter = AbstractInterpreter::createLLC(Path.c_str(), Message,
|
||||
&SafeToolArgs,
|
||||
GCCBinary, &SafeToolArgs,
|
||||
&GCCToolArgv,
|
||||
SafeInterpreterSel == RunLLCIA);
|
||||
break;
|
||||
case RunCBE:
|
||||
SafeInterpreter = AbstractInterpreter::createCBE(Path.c_str(), Message,
|
||||
&SafeToolArgs,
|
||||
GCCBinary, &SafeToolArgs,
|
||||
&GCCToolArgv);
|
||||
break;
|
||||
case Custom:
|
||||
@ -271,7 +282,7 @@ bool BugDriver::initializeExecutionEnvironment() {
|
||||
}
|
||||
if (!SafeInterpreter) { outs() << Message << "\nExiting.\n"; exit(1); }
|
||||
|
||||
gcc = GCC::create(Message, &GCCToolArgv);
|
||||
gcc = GCC::create(Message, GCCBinary, &GCCToolArgv);
|
||||
if (!gcc) { outs() << Message << "\nExiting.\n"; exit(1); }
|
||||
|
||||
// If there was an error creating the selected interpreter, quit with error.
|
||||
|
@ -413,7 +413,6 @@ int LLC::ExecuteProgram(const std::string &Bitcode,
|
||||
|
||||
std::vector<std::string> GCCArgs(ArgsForGCC);
|
||||
GCCArgs.insert(GCCArgs.end(), SharedLibs.begin(), SharedLibs.end());
|
||||
GCCArgs.insert(GCCArgs.end(), gccArgs.begin(), gccArgs.end());
|
||||
|
||||
// Assuming LLC worked, compile the result with GCC and run it.
|
||||
return gcc->ExecuteProgram(OutputAsmFile.str(), Args, FileKind,
|
||||
@ -425,6 +424,7 @@ int LLC::ExecuteProgram(const std::string &Bitcode,
|
||||
///
|
||||
LLC *AbstractInterpreter::createLLC(const char *Argv0,
|
||||
std::string &Message,
|
||||
const std::string &GCCBinary,
|
||||
const std::vector<std::string> *Args,
|
||||
const std::vector<std::string> *GCCArgs,
|
||||
bool UseIntegratedAssembler) {
|
||||
@ -436,12 +436,12 @@ LLC *AbstractInterpreter::createLLC(const char *Argv0,
|
||||
}
|
||||
|
||||
Message = "Found llc: " + LLCPath + "\n";
|
||||
GCC *gcc = GCC::create(Message, GCCArgs);
|
||||
GCC *gcc = GCC::create(Message, GCCBinary, GCCArgs);
|
||||
if (!gcc) {
|
||||
errs() << Message << "\n";
|
||||
exit(1);
|
||||
}
|
||||
return new LLC(LLCPath, gcc, Args, GCCArgs, UseIntegratedAssembler);
|
||||
return new LLC(LLCPath, gcc, Args, UseIntegratedAssembler);
|
||||
}
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
@ -593,6 +593,7 @@ int CBE::ExecuteProgram(const std::string &Bitcode,
|
||||
///
|
||||
CBE *AbstractInterpreter::createCBE(const char *Argv0,
|
||||
std::string &Message,
|
||||
const std::string &GCCBinary,
|
||||
const std::vector<std::string> *Args,
|
||||
const std::vector<std::string> *GCCArgs) {
|
||||
sys::Path LLCPath =
|
||||
@ -604,7 +605,7 @@ CBE *AbstractInterpreter::createCBE(const char *Argv0,
|
||||
}
|
||||
|
||||
Message = "Found llc: " + LLCPath.str() + "\n";
|
||||
GCC *gcc = GCC::create(Message, GCCArgs);
|
||||
GCC *gcc = GCC::create(Message, GCCBinary, GCCArgs);
|
||||
if (!gcc) {
|
||||
errs() << Message << "\n";
|
||||
exit(1);
|
||||
@ -852,10 +853,11 @@ int GCC::MakeSharedObject(const std::string &InputFile, FileType fileType,
|
||||
/// create - Try to find the `gcc' executable
|
||||
///
|
||||
GCC *GCC::create(std::string &Message,
|
||||
const std::string &GCCBinary,
|
||||
const std::vector<std::string> *Args) {
|
||||
sys::Path GCCPath = sys::Program::FindProgramByName("gcc");
|
||||
sys::Path GCCPath = sys::Program::FindProgramByName(GCCBinary);
|
||||
if (GCCPath.isEmpty()) {
|
||||
Message = "Cannot find `gcc' in executable directory or PATH!\n";
|
||||
Message = "Cannot find `"+ GCCBinary +"' in executable directory or PATH!\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -49,6 +49,7 @@ public:
|
||||
enum FileType { AsmFile, ObjectFile, CFile };
|
||||
|
||||
static GCC *create(std::string &Message,
|
||||
const std::string &GCCBinary,
|
||||
const std::vector<std::string> *Args);
|
||||
|
||||
/// ExecuteProgram - Execute the program specified by "ProgramFile" (which is
|
||||
@ -87,9 +88,11 @@ public:
|
||||
class AbstractInterpreter {
|
||||
public:
|
||||
static CBE *createCBE(const char *Argv0, std::string &Message,
|
||||
const std::string &GCCBinary,
|
||||
const std::vector<std::string> *Args = 0,
|
||||
const std::vector<std::string> *GCCArgs = 0);
|
||||
static LLC *createLLC(const char *Argv0, std::string &Message,
|
||||
const std::string &GCCBinary,
|
||||
const std::vector<std::string> *Args = 0,
|
||||
const std::vector<std::string> *GCCArgs = 0,
|
||||
bool UseIntegratedAssembler = false);
|
||||
@ -187,19 +190,16 @@ public:
|
||||
class LLC : public AbstractInterpreter {
|
||||
std::string LLCPath; // The path to the LLC executable.
|
||||
std::vector<std::string> ToolArgs; // Extra args to pass to LLC.
|
||||
std::vector<std::string> gccArgs; // Extra args to pass to GCC.
|
||||
GCC *gcc;
|
||||
bool UseIntegratedAssembler;
|
||||
public:
|
||||
LLC(const std::string &llcPath, GCC *Gcc,
|
||||
const std::vector<std::string> *Args,
|
||||
const std::vector<std::string> *GCCArgs,
|
||||
bool useIntegratedAssembler)
|
||||
: LLCPath(llcPath), gcc(Gcc),
|
||||
UseIntegratedAssembler(useIntegratedAssembler) {
|
||||
ToolArgs.clear();
|
||||
if (Args) ToolArgs = *Args;
|
||||
if (GCCArgs) gccArgs = *GCCArgs;
|
||||
}
|
||||
~LLC() { delete gcc; }
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user