mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-29 22:50:55 +00:00
For PR351:
* Support changes in sys::Program::ExecuteAndWait interface git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19044 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2a7d9e98ba
commit
f6358c75eb
@ -242,13 +242,13 @@ int llvm::GenerateAssembly(const std::string &OutputFilename,
|
||||
const std::string &InputFilename,
|
||||
const sys::Path &llc) {
|
||||
// Run LLC to convert the bytecode file into assembly code.
|
||||
std::vector<std::string> args;
|
||||
std::vector<const char*> args;
|
||||
args.push_back("-f");
|
||||
args.push_back("-o");
|
||||
args.push_back(OutputFilename);
|
||||
args.push_back(InputFilename);
|
||||
args.push_back(OutputFilename.c_str());
|
||||
args.push_back(InputFilename.c_str());
|
||||
|
||||
return sys::Program::ExecuteAndWait(llc, args);
|
||||
return sys::Program::ExecuteAndWait(llc, &args[0]);
|
||||
}
|
||||
|
||||
/// GenerateAssembly - generates a native assembly language source file from the
|
||||
@ -257,13 +257,13 @@ int llvm::GenerateCFile(const std::string &OutputFile,
|
||||
const std::string &InputFile,
|
||||
const sys::Path &llc ) {
|
||||
// Run LLC to convert the bytecode file into C.
|
||||
std::vector<std::string> args;
|
||||
std::vector<const char*> args;
|
||||
args.push_back("-march=c");
|
||||
args.push_back("-f");
|
||||
args.push_back("-o");
|
||||
args.push_back(OutputFile);
|
||||
args.push_back(InputFile);
|
||||
return sys::Program::ExecuteAndWait(llc, args);
|
||||
args.push_back(OutputFile.c_str());
|
||||
args.push_back(InputFile.c_str());
|
||||
return sys::Program::ExecuteAndWait(llc, &args[0]);
|
||||
}
|
||||
|
||||
/// GenerateNative - generates a native assembly language source file from the
|
||||
@ -308,20 +308,22 @@ int llvm::GenerateNative(const std::string &OutputFilename,
|
||||
// We can't just assemble and link the file with the system assembler
|
||||
// and linker because we don't know where to put the _start symbol.
|
||||
// GCC mysteriously knows how to do it.
|
||||
std::vector<std::string> args;
|
||||
std::vector<const char*> args;
|
||||
args.push_back("-fno-strict-aliasing");
|
||||
args.push_back("-O3");
|
||||
args.push_back("-o");
|
||||
args.push_back(OutputFilename);
|
||||
args.push_back(InputFilename);
|
||||
args.push_back(OutputFilename.c_str());
|
||||
args.push_back(InputFilename.c_str());
|
||||
|
||||
// Add in the libraries to link.
|
||||
for (unsigned index = 0; index < Libraries.size(); index++) {
|
||||
if (Libraries[index] != "crtend")
|
||||
args.push_back("-l" + Libraries[index]);
|
||||
if (Libraries[index] != "crtend") {
|
||||
args.push_back("-l");
|
||||
args.push_back(Libraries[index].c_str());
|
||||
}
|
||||
}
|
||||
|
||||
// Run the compiler to assembly and link together the program.
|
||||
return sys::Program::ExecuteAndWait(gcc, args, (const char**)clean_env);
|
||||
return sys::Program::ExecuteAndWait(gcc, &args[0], (const char**)clean_env);
|
||||
}
|
||||
|
||||
|
@ -218,13 +218,13 @@ static int GenerateAssembly(const std::string &OutputFilename,
|
||||
const std::string &InputFilename,
|
||||
const sys::Path &llc) {
|
||||
// Run LLC to convert the bytecode file into assembly code.
|
||||
std::vector<std::string> args;
|
||||
std::vector<const char*> args;
|
||||
args.push_back( "-f");
|
||||
args.push_back( "-o");
|
||||
args.push_back( OutputFilename);
|
||||
args.push_back( InputFilename);
|
||||
args.push_back( OutputFilename.c_str() );
|
||||
args.push_back( InputFilename.c_str() );
|
||||
|
||||
return sys::Program::ExecuteAndWait(llc,args);
|
||||
return sys::Program::ExecuteAndWait(llc,&args[0]);
|
||||
}
|
||||
|
||||
/// GenerateAssembly - generates a native assembly language source file from the
|
||||
@ -233,13 +233,13 @@ static int GenerateCFile(const std::string &OutputFile,
|
||||
const std::string &InputFile,
|
||||
const sys::Path &llc) {
|
||||
// Run LLC to convert the bytecode file into C.
|
||||
std::vector<std::string> args;
|
||||
std::vector<const char*> args;
|
||||
args.push_back( "-march=c");
|
||||
args.push_back( "-f");
|
||||
args.push_back( "-o");
|
||||
args.push_back( OutputFile);
|
||||
args.push_back( InputFile);
|
||||
return sys::Program::ExecuteAndWait(llc, args);
|
||||
args.push_back( OutputFile.c_str() );
|
||||
args.push_back( InputFile.c_str() );
|
||||
return sys::Program::ExecuteAndWait(llc, &args[0]);
|
||||
}
|
||||
|
||||
/// GenerateNative - generates a native assembly language source file from the
|
||||
@ -285,20 +285,22 @@ static int GenerateNative(const std::string &OutputFilename,
|
||||
// We can't just assemble and link the file with the system assembler
|
||||
// and linker because we don't know where to put the _start symbol.
|
||||
// GCC mysteriously knows how to do it.
|
||||
std::vector<std::string> args;
|
||||
std::vector<const char*> args;
|
||||
args.push_back("-fno-strict-aliasing");
|
||||
args.push_back("-O3");
|
||||
args.push_back("-o");
|
||||
args.push_back(OutputFilename);
|
||||
args.push_back(InputFilename);
|
||||
args.push_back(OutputFilename.c_str());
|
||||
args.push_back(InputFilename.c_str());
|
||||
|
||||
// Add in the libraries to link.
|
||||
for (unsigned index = 0; index < Libraries.size(); index++)
|
||||
if (Libraries[index] != "crtend")
|
||||
args.push_back("-l" + Libraries[index]);
|
||||
if (Libraries[index] != "crtend") {
|
||||
args.push_back("-l");
|
||||
args.push_back(Libraries[index].c_str());
|
||||
}
|
||||
|
||||
// Run the compiler to assembly and link together the program.
|
||||
return sys::Program::ExecuteAndWait(gcc, args, (const char**)clean_env);
|
||||
return sys::Program::ExecuteAndWait(gcc, &args[0], (const char**)clean_env);
|
||||
}
|
||||
|
||||
/// EmitShellScript - Output the wrapper file that invokes the JIT on the LLVM
|
||||
|
@ -28,9 +28,9 @@ namespace {
|
||||
|
||||
void WriteAction(CompilerDriver::Action* action ) {
|
||||
std::cerr << action->program.c_str();
|
||||
std::vector<std::string>::iterator I = action->args.begin();
|
||||
std::vector<std::string>::const_iterator I = action->args.begin();
|
||||
while (I != action->args.end()) {
|
||||
std::cerr << " " + *I;
|
||||
std::cerr << " " << *I;
|
||||
++I;
|
||||
}
|
||||
std::cerr << "\n";
|
||||
@ -38,9 +38,9 @@ void WriteAction(CompilerDriver::Action* action ) {
|
||||
|
||||
void DumpAction(CompilerDriver::Action* action) {
|
||||
std::cerr << "command = " << action->program.c_str();
|
||||
std::vector<std::string>::iterator I = action->args.begin();
|
||||
std::vector<std::string>::const_iterator I = action->args.begin();
|
||||
while (I != action->args.end()) {
|
||||
std::cerr << " " + *I;
|
||||
std::cerr << " " << *I;
|
||||
++I;
|
||||
}
|
||||
std::cerr << "\n";
|
||||
@ -392,18 +392,23 @@ private:
|
||||
"' is not executable.");
|
||||
|
||||
// Invoke the program
|
||||
const char** Args = (const char**)
|
||||
alloca(sizeof(const char*)*action->args.size());
|
||||
for (unsigned i = 0; i != action->args.size(); ++i) {
|
||||
Args[i] = action->args[i].c_str();
|
||||
}
|
||||
if (isSet(TIME_ACTIONS_FLAG)) {
|
||||
Timer timer(action->program.toString());
|
||||
timer.startTimer();
|
||||
int resultCode =
|
||||
sys::Program::ExecuteAndWait(action->program,action->args);
|
||||
sys::Program::ExecuteAndWait(action->program,Args);
|
||||
timer.stopTimer();
|
||||
timer.print(timer,std::cerr);
|
||||
return resultCode == 0;
|
||||
}
|
||||
else
|
||||
return 0 ==
|
||||
sys::Program::ExecuteAndWait(action->program, action->args);
|
||||
sys::Program::ExecuteAndWait(action->program, Args);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -560,7 +565,7 @@ public:
|
||||
/// PRE-PROCESSING / TRANSLATION / OPTIMIZATION / ASSEMBLY phases
|
||||
// for each input item
|
||||
SetVector<sys::Path> LinkageItems;
|
||||
std::vector<std::string> LibFiles;
|
||||
StringVector LibFiles;
|
||||
InputList::const_iterator I = InpList.begin();
|
||||
for (InputList::const_iterator I = InpList.begin(), E = InpList.end();
|
||||
I != E; ++I ) {
|
||||
@ -817,7 +822,7 @@ public:
|
||||
link->args.push_back(I->toString());
|
||||
|
||||
// Add in all the libraries we found.
|
||||
for (std::vector<std::string>::const_iterator I=LibFiles.begin(),
|
||||
for (StringVector::const_iterator I=LibFiles.begin(),
|
||||
E=LibFiles.end(); I != E; ++I )
|
||||
link->args.push_back(std::string("-l")+*I);
|
||||
|
||||
|
@ -81,9 +81,9 @@ namespace llvm {
|
||||
/// language.
|
||||
struct Action {
|
||||
Action() : flags(0) {}
|
||||
sys::Path program; ///< The program to execve
|
||||
StringVector args; ///< Arguments to the program
|
||||
unsigned flags; ///< Action specific flags
|
||||
sys::Path program; ///< The program to execve
|
||||
StringVector args; ///< Arguments to the program
|
||||
unsigned flags; ///< Action specific flags
|
||||
void set(unsigned fl ) { flags |= fl; }
|
||||
void clear(unsigned fl) { flags &= (FLAGS_MASK ^ fl); }
|
||||
bool isSet(unsigned fl) { return (flags&fl) != 0; }
|
||||
|
Loading…
Reference in New Issue
Block a user