diff options
author | David Goodwin <david_goodwin@apple.com> | 2009-07-10 21:39:28 +0000 |
---|---|---|
committer | David Goodwin <david_goodwin@apple.com> | 2009-07-10 21:39:28 +0000 |
commit | ec1edba663483b0f2381e44b8c69a1284d471156 (patch) | |
tree | a4a2cbeb546cd20cc9e564fdd50310bd99b29f6d /tools | |
parent | 50e9111ac3137f09b9b8cc492d7d57b5927aa5e9 (diff) | |
download | external_llvm-ec1edba663483b0f2381e44b8c69a1284d471156.zip external_llvm-ec1edba663483b0f2381e44b8c69a1284d471156.tar.gz external_llvm-ec1edba663483b0f2381e44b8c69a1284d471156.tar.bz2 |
Support remote execute for ARM.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75292 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r-- | tools/bugpoint/BugDriver.cpp | 2 | ||||
-rw-r--r-- | tools/bugpoint/ExecutionDriver.cpp | 7 | ||||
-rw-r--r-- | tools/bugpoint/Miscompilation.cpp | 4 | ||||
-rw-r--r-- | tools/bugpoint/ToolRunner.cpp | 31 |
4 files changed, 37 insertions, 7 deletions
diff --git a/tools/bugpoint/BugDriver.cpp b/tools/bugpoint/BugDriver.cpp index aab5072..269bf5f 100644 --- a/tools/bugpoint/BugDriver.cpp +++ b/tools/bugpoint/BugDriver.cpp @@ -205,7 +205,7 @@ bool BugDriver::run() { std::cout << "*** Checking the code generator...\n"; try { if (!diffProgram()) { - std::cout << "\n*** Debugging miscompilation!\n"; + std::cout << "\n*** Output matches: Debugging miscompilation!\n"; return debugMiscompilation(); } } catch (ToolExecutionError &TEE) { diff --git a/tools/bugpoint/ExecutionDriver.cpp b/tools/bugpoint/ExecutionDriver.cpp index 640fe28..854aeb8 100644 --- a/tools/bugpoint/ExecutionDriver.cpp +++ b/tools/bugpoint/ExecutionDriver.cpp @@ -457,9 +457,10 @@ bool BugDriver::diffProgram(const std::string &BitcodeFile, } FilesDifferent = true; } - - // Remove the generated output. - Output.eraseFromDisk(); + else { + // Remove the generated output if there are no differences. + Output.eraseFromDisk(); + } // Remove the bitcode file if we are supposed to. if (RemoveBitcode) diff --git a/tools/bugpoint/Miscompilation.cpp b/tools/bugpoint/Miscompilation.cpp index 21e1412..785abb9 100644 --- a/tools/bugpoint/Miscompilation.cpp +++ b/tools/bugpoint/Miscompilation.cpp @@ -57,7 +57,7 @@ ReduceMiscompilingPasses::doTest(std::vector<const PassInfo*> &Prefix, // First, run the program with just the Suffix passes. If it is still broken // with JUST the kept passes, discard the prefix passes. std::cout << "Checking to see if '" << getPassesString(Suffix) - << "' compile correctly: "; + << "' compiles correctly: "; std::string BitcodeResult; if (BD.runPasses(Suffix, BitcodeResult, false/*delete*/, true/*quiet*/)) { @@ -85,7 +85,7 @@ ReduceMiscompilingPasses::doTest(std::vector<const PassInfo*> &Prefix, // Next, see if the program is broken if we run the "prefix" passes first, // then separately run the "kept" passes. std::cout << "Checking to see if '" << getPassesString(Prefix) - << "' compile correctly: "; + << "' compiles correctly: "; // If it is not broken with the kept passes, it's possible that the prefix // passes must be run before the kept passes to break it. If the program diff --git a/tools/bugpoint/ToolRunner.cpp b/tools/bugpoint/ToolRunner.cpp index 978e60b..7087cdd 100644 --- a/tools/bugpoint/ToolRunner.cpp +++ b/tools/bugpoint/ToolRunner.cpp @@ -33,6 +33,10 @@ namespace { cl::desc("Remote execution (rsh/ssh) host")); cl::opt<std::string> + RemotePort("remote-port", + cl::desc("Remote execution (rsh/ssh) port")); + + cl::opt<std::string> RemoteUser("remote-user", cl::desc("Remote execution (rsh/ssh) user id")); @@ -538,6 +542,23 @@ CBE *AbstractInterpreter::createCBE(const std::string &ProgramPath, //===---------------------------------------------------------------------===// // GCC abstraction // + +static bool +IsARMArchitecture(std::vector<std::string> Args) +{ + for (std::vector<std::string>::const_iterator + I = Args.begin(), E = Args.end(); I != E; ++I) { + if (!strcasecmp(I->c_str(), "-arch")) { + ++I; + if ((I != E) && !strncasecmp(I->c_str(), "arm", strlen("arm"))) { + return true; + } + } + } + + return false; +} + int GCC::ExecuteProgram(const std::string &ProgramFile, const std::vector<std::string> &Args, FileType fileType, @@ -562,7 +583,11 @@ int GCC::ExecuteProgram(const std::string &ProgramFile, } else { GCCArgs.push_back("assembler"); #ifdef __APPLE__ - GCCArgs.push_back("-force_cpusubtype_ALL"); + // For ARM architectures we don't want this flag. bugpoint isn't + // explicitly told what architecture it is working on, so we get + // it from gcc flags + if (!IsARMArchitecture(ArgsForGCC)) + GCCArgs.push_back("-force_cpusubtype_ALL"); #endif } GCCArgs.push_back(ProgramFile.c_str()); // Specify the input filename... @@ -615,6 +640,10 @@ int GCC::ExecuteProgram(const std::string &ProgramFile, ProgramArgs.push_back(RemoteHost.c_str()); ProgramArgs.push_back("-l"); ProgramArgs.push_back(RemoteUser.c_str()); + if (!RemotePort.empty()) { + ProgramArgs.push_back("-p"); + ProgramArgs.push_back(RemotePort.c_str()); + } if (!RemoteExtra.empty()) { ProgramArgs.push_back(RemoteExtra.c_str()); } |