aboutsummaryrefslogtreecommitdiff
path: root/tools/gccld/GenerateCode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gccld/GenerateCode.cpp')
-rw-r--r--tools/gccld/GenerateCode.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/tools/gccld/GenerateCode.cpp b/tools/gccld/GenerateCode.cpp
index d2c0f3dd31..dad1bc2442 100644
--- a/tools/gccld/GenerateCode.cpp
+++ b/tools/gccld/GenerateCode.cpp
@@ -25,7 +25,6 @@
#include "llvm/Transforms/Utils/Linker.h"
#include "Support/SystemUtils.h"
#include "Support/CommandLine.h"
-
using namespace llvm;
namespace {
@@ -182,6 +181,23 @@ GenerateAssembly(const std::string &OutputFilename,
return ExecWait(cmd, envp);
}
+/// GenerateAssembly - generates a native assembly language source file from the
+/// specified bytecode file.
+int GenerateCFile(const std::string &OutputFile, const std::string &InputFile,
+ const std::string &llc, char ** const envp) {
+ // Run LLC to convert the bytecode file into C.
+ const char *cmd[8];
+
+ cmd[0] = llc.c_str();
+ cmd[1] = "-march=c";
+ cmd[2] = "-f";
+ cmd[3] = "-o";
+ cmd[4] = OutputFile.c_str();
+ cmd[5] = InputFile.c_str();
+ cmd[6] = NULL;
+ return ExecWait(cmd, envp);
+}
+
/// GenerateNative - generates a native assembly language source file from the
/// specified assembly source file.
///
@@ -230,6 +246,7 @@ GenerateNative(const std::string &OutputFilename,
// and linker because we don't know where to put the _start symbol.
// GCC mysteriously knows how to do it.
cmd.push_back(gcc.c_str());
+ cmd.push_back("-O3");
cmd.push_back("-o");
cmd.push_back(OutputFilename.c_str());
cmd.push_back(InputFilename.c_str());