Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(360)

Unified Diff: tools/pnacl-llc/pnacl-llc.cpp

Issue 14604011: Separate the PNaCl llc into a tool named pnacl-llc (how original!) (Closed) Base URL: http://git.chromium.org/native_client/pnacl-llvm.git@master
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« tools/pnacl-llc/Makefile ('K') | « tools/pnacl-llc/nacl_file.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
}
« tools/pnacl-llc/Makefile ('K') | « tools/pnacl-llc/nacl_file.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698