Index: lib/Target/PNaCl/PNaClTargetMachine.cpp |
diff --git a/lib/Target/PNaCl/PNaClTargetMachine.cpp b/lib/Target/PNaCl/PNaClTargetMachine.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9e0e380420f03ae3f08c1b6635b2d9a6e3e1e629 |
--- /dev/null |
+++ b/lib/Target/PNaCl/PNaClTargetMachine.cpp |
@@ -0,0 +1,66 @@ |
+//===-- llvm/Target/PNaCl/PNaClTargetMachine.cpp - Target Information -*- C++ -*-===// |
+// |
+// The LLVM Compiler Infrastructure |
+// |
+// This file is distributed under the University of Illinois Open Source |
+// License. See LICENSE.TXT for details. |
+// |
+//===----------------------------------------------------------------------===// |
+// |
+// This file defines the TargetMachine class specific to PNaCl. |
+// |
+//===----------------------------------------------------------------------===// |
+ |
+#include "PNaClTargetMachine.h" |
+#include "TargetInfo/PNaClTargetInfo.h" |
+ |
+#include "llvm/Bitcode/BitcodeWriterPass.h" |
+#include "llvm/IR/IRPrintingPasses.h" |
+#include "llvm/IR/LegacyPassManager.h" |
+#include "llvm/Support/TargetRegistry.h" |
+ |
+using namespace llvm; |
+ |
+extern "C" void LLVMInitializePNaClTarget() { |
+ RegisterTargetMachine<PNaClTargetMachine> X(PNaClLe32_Target); |
+} |
+ |
+static const char* Datalayout = "e-p:32:32-i64:64-n32"; |
+ |
+llvm::PNaClTargetMachine::PNaClTargetMachine(const Target& T, StringRef TT, |
+ StringRef CPU, StringRef FS, |
+ const TargetOptions &Options, |
+ Reloc::Model RM, |
+ CodeModel::Model CM, |
+ CodeGenOpt::Level OL) |
+ : TargetMachine(T, Datalayout, TT, CPU, FS, Options) |
+{ |
+ (void)RM; (void)CM; (void)OL; |
+} |
+ |
+llvm::PNaClTargetMachine::~PNaClTargetMachine() { |
+} |
+ |
+bool llvm::PNaClTargetMachine::addPassesToEmitFile(PassManagerBase &PM, |
+ raw_pwrite_stream &Out, |
+ CodeGenFileType FType, |
+ bool DisableVerify, |
+ AnalysisID StartAfter, |
+ AnalysisID StopAfter) { |
+ (void)DisableVerify; |
+ (void)StartAfter; |
+ (void)StopAfter; |
+ |
+ switch(FType) { |
+ case CGFT_ObjectFile: |
+ PM.add(createBitcodeWriterPass(Out)); |
+ break; |
+ case CGFT_AssemblyFile: |
+ PM.add(createPrintModulePass(Out)); |
+ break; |
+ case CGFT_Null: |
+ return true; |
+ } |
+ |
+ return false; |
+} |