Chromium Code Reviews| Index: tools/pnacl-llc/pnacl-llc.cpp |
| diff --git a/tools/llc/llc.cpp b/tools/pnacl-llc/pnacl-llc.cpp |
| similarity index 87% |
| copy from tools/llc/llc.cpp |
| copy to tools/pnacl-llc/pnacl-llc.cpp |
| index 64bb6991d8d990e75028acacdcbd5ae1f092b46a..06e7bf4f7ca6e3dae46988af6374ab8231388d4d 100644 |
| --- a/tools/llc/llc.cpp |
| +++ b/tools/pnacl-llc/pnacl-llc.cpp |
| @@ -1,4 +1,4 @@ |
| -//===-- llc.cpp - Implement the LLVM Native Code Generator ----------------===// |
| +//===-- pnacl-llc.cpp - PNaCl-specific llc: pexe ---> nexe ---------------===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| @@ -7,22 +7,20 @@ |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| -// This is the llc code generator driver. It provides a convenient |
| -// command-line interface for generating native assembly-language code |
| -// or C code, given LLVM bitcode. |
| +// pnacl-llc: the core of the PNaCl translator, compiling a pexe into a nexe. |
| // |
| //===----------------------------------------------------------------------===// |
| -#include "llvm/IR/LLVMContext.h" |
| #include "llvm/ADT/Triple.h" |
| #include "llvm/Analysis/NaCl.h" |
| #include "llvm/Assembly/PrintModulePass.h" |
| -#include "llvm/Support/DataStream.h" // @LOCALMOD |
| +#include "llvm/Support/DataStream.h" |
| #include "llvm/CodeGen/CommandFlags.h" |
| -#include "llvm/CodeGen/IntrinsicLowering.h" // @LOCALMOD |
| +#include "llvm/CodeGen/IntrinsicLowering.h" |
|
jvoung (off chromium)
2013/05/15 16:56:06
Can remove this localmod #include (not just remove
eliben
2013/05/15 18:01:18
Done.
|
| #include "llvm/CodeGen/LinkAllAsmWriterComponents.h" |
| #include "llvm/CodeGen/LinkAllCodegenComponents.h" |
| #include "llvm/IR/DataLayout.h" |
| +#include "llvm/IR/LLVMContext.h" |
| #include "llvm/IR/Module.h" |
| #include "llvm/MC/SubtargetFeature.h" |
| #include "llvm/Pass.h" |
| @@ -33,23 +31,16 @@ |
| #include "llvm/Support/Host.h" |
| #include "llvm/Support/IRReader.h" |
| #include "llvm/Support/ManagedStatic.h" |
| -#if !defined(__native_client__) |
| -#include "llvm/Support/PluginLoader.h" |
| -#endif |
| #include "llvm/Support/PrettyStackTrace.h" |
| #include "llvm/Support/Signals.h" |
| #include "llvm/Support/TargetRegistry.h" |
| #include "llvm/Support/TargetSelect.h" |
| +#include "llvm/Support/Timer.h" |
| #include "llvm/Support/ToolOutputFile.h" |
| #include "llvm/Target/TargetLibraryInfo.h" |
| #include "llvm/Target/TargetMachine.h" |
| #include <memory> |
| -// @LOCALMOD-BEGIN |
| -#include "llvm/Support/Timer.h" |
| -#include "StubMaker.h" |
| -#include "TextStubWriter.h" |
| -// @LOCALMOD-END |
| using namespace llvm; |
| @@ -95,10 +86,6 @@ TimeCompilations("time-compilations", cl::Hidden, cl::init(1u), |
| cl::value_desc("N"), |
| cl::desc("Repeat compilation N times for timing")); |
| // @LOCALMOD-BEGIN |
|
Mark Seaborn
2013/05/15 16:20:08
Should these @LOCALMOD comments be removed too?
eliben
2013/05/15 18:01:18
Yes, I'm removing them. I wanted this CL not to be
|
| -static cl::opt<std::string> |
| -MetadataTextFilename("metadata-text", cl::desc("Metadata as text, out filename"), |
| - cl::value_desc("filename")); |
| - |
| // Using bitcode streaming has a couple of ramifications. Primarily it means |
| // that the module in the file will be compiled one function at a time rather |
| // than the whole module. This allows earlier functions to be compiled before |
| @@ -229,55 +216,6 @@ static tool_output_file *GetOutputStream(const char *TargetName, |
| } |
| // @LOCALMOD-BEGIN |
| -#if defined(__native_client__) && defined(NACL_SRPC) |
| -void RecordMetadataForSrpc(const Module &mod) { |
| - bool is_shared = (mod.getOutputFormat() == Module::SharedOutputFormat); |
| - std::string soname = mod.getSOName(); |
| - NaClRecordObjectInformation(is_shared, soname); |
| - for (Module::lib_iterator L = mod.lib_begin(), |
| - E = mod.lib_end(); |
| - L != E; ++L) { |
| - NaClRecordSharedLibraryDependency(*L); |
| - } |
| -} |
| -#endif // defined(__native_client__) && defined(NACL_SRPC) |
| -// @LOCALMOD-END |
| - |
| - |
| -// @LOCALMOD-BEGIN |
| - |
| -// Write the ELF Stubs to the metadata file, in text format |
| -// Returns 0 on success, non-zero on error. |
| -int WriteTextMetadataFile(const Module &M, const Triple &TheTriple) { |
| - // Build the ELF stubs (in high level format) |
| - SmallVector<ELFStub*, 8> StubList; |
| - // NOTE: The triple is unnecessary for the text version. |
| - MakeAllStubs(M, TheTriple, &StubList); |
| - // For each stub, write the ELF object to the metadata file. |
| - std::string s; |
| - for (unsigned i = 0; i < StubList.size(); i++) { |
| - WriteTextELFStub(StubList[i], &s); |
| - } |
| - FreeStubList(&StubList); |
| - |
| -#if defined(__native_client__) && defined(NACL_SRPC) |
| - llvm_unreachable("Not yet implemented. Need a file handle to write to."); |
| -#else |
| - std::string error; |
| - OwningPtr<tool_output_file> MOut( |
| - new tool_output_file(MetadataTextFilename.c_str(), error, |
| - raw_fd_ostream::F_Binary)); |
| - if (!error.empty()) { |
| - errs() << error << '\n'; |
| - return 1; |
| - } |
| - MOut->os().write(s.data(), s.size()); |
| - MOut->keep(); |
| -#endif |
| - return 0; |
| -} |
| - |
| -// @LOCALMOD-END |
| // main - Entry point for the llc compiler. |
| // |
| @@ -393,8 +331,6 @@ static int compileModule(char **argv, LLVMContext &Context) { |
| CheckABIVerifyErrors(ABIErrorReporter, "Module"); |
| } |
| #if defined(__native_client__) && defined(NACL_SRPC) |
| - RecordMetadataForSrpc(*mod); |
| - |
| // To determine if we should compile PIC or not, we needed to load at |
| // least the metadata. Since we've already constructed the commandline, |
| // we have to hack this in after commandline processing. |
| @@ -640,23 +576,6 @@ static int compileModule(char **argv, LLVMContext &Context) { |
| Out->keep(); |
| #endif |
| - // @LOCALMOD-BEGIN |
| - // Write out the metadata. |
| - // |
| - // We need to ensure that intrinsic prototypes are available, in case |
| - // we have a NeededRecord for one of them. |
| - // They may have been eliminated by the StripDeadPrototypes pass, |
| - // or some other pass that is unaware of NeededRecords / IntrinsicLowering. |
| - if (!MetadataTextFilename.empty()) { |
| - IntrinsicLowering IL(*target->getDataLayout()); |
| - IL.AddPrototypes(*M); |
| - |
| - int err = WriteTextMetadataFile(*M.get(), TheTriple); |
| - if (err != 0) |
| - return err; |
| - } |
| - // @LOCALMOD-END |
| - |
| return 0; |
| } |