OLD | NEW |
1 //===- subzero/src/IceCompiler.cpp - Driver for bitcode translation -------===// | 1 //===- subzero/src/IceCompiler.cpp - Driver for bitcode translation -------===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 /// | 9 /// |
10 /// \file | 10 /// \file |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 Ctx.emitFileHeader(); | 79 Ctx.emitFileHeader(); |
80 Ctx.startWorkerThreads(); | 80 Ctx.startWorkerThreads(); |
81 | 81 |
82 std::unique_ptr<Translator> Translator; | 82 std::unique_ptr<Translator> Translator; |
83 const std::string IRFilename = Flags.getIRFilename(); | 83 const std::string IRFilename = Flags.getIRFilename(); |
84 const bool BuildOnRead = Flags.getBuildOnRead() && !llvmIRInput(IRFilename) && | 84 const bool BuildOnRead = Flags.getBuildOnRead() && !llvmIRInput(IRFilename) && |
85 !wasmInput(IRFilename); | 85 !wasmInput(IRFilename); |
86 const bool WasmBuildOnRead = Flags.getBuildOnRead() && wasmInput(IRFilename); | 86 const bool WasmBuildOnRead = Flags.getBuildOnRead() && wasmInput(IRFilename); |
87 if (BuildOnRead) { | 87 if (BuildOnRead) { |
88 std::unique_ptr<PNaClTranslator> PTranslator(new PNaClTranslator(&Ctx)); | 88 std::unique_ptr<PNaClTranslator> PTranslator(new PNaClTranslator(&Ctx)); |
| 89 #ifdef PNACL_LLVM |
89 std::unique_ptr<llvm::StreamingMemoryObject> MemObj( | 90 std::unique_ptr<llvm::StreamingMemoryObject> MemObj( |
90 new llvm::StreamingMemoryObjectImpl(InputStream.release())); | 91 new llvm::StreamingMemoryObjectImpl(InputStream.release())); |
| 92 #else // !PNACL_LLVM |
| 93 std::unique_ptr<llvm::StreamingMemoryObject> MemObj( |
| 94 new llvm::StreamingMemoryObject(std::move(InputStream))); |
| 95 #endif // !PNACL_LLVM |
91 PTranslator->translate(IRFilename, std::move(MemObj)); | 96 PTranslator->translate(IRFilename, std::move(MemObj)); |
92 Translator.reset(PTranslator.release()); | 97 Translator.reset(PTranslator.release()); |
93 } else if (WasmBuildOnRead) { | 98 } else if (WasmBuildOnRead) { |
94 if (BuildDefs::wasm()) { | 99 if (BuildDefs::wasm()) { |
95 #if !ALLOW_WASM | 100 #if !ALLOW_WASM |
96 assert(false && "wasm not allowed"); | 101 assert(false && "wasm not allowed"); |
97 #else | 102 #else |
98 std::unique_ptr<WasmTranslator> WTranslator(new WasmTranslator(&Ctx)); | 103 std::unique_ptr<WasmTranslator> WTranslator(new WasmTranslator(&Ctx)); |
99 | 104 |
100 WTranslator->translate(IRFilename, std::move(InputStream)); | 105 WTranslator->translate(IRFilename, std::move(InputStream)); |
(...skipping 12 matching lines...) Expand all Loading... |
113 Ctx.getErrorStatus()->assign(EC_Args); | 118 Ctx.getErrorStatus()->assign(EC_Args); |
114 Ctx.waitForWorkerThreads(); | 119 Ctx.waitForWorkerThreads(); |
115 return; | 120 return; |
116 } | 121 } |
117 // Globals must be kept alive after lowering when converting from LLVM to | 122 // Globals must be kept alive after lowering when converting from LLVM to |
118 // Ice. | 123 // Ice. |
119 Ctx.setDisposeGlobalVariablesAfterLowering(false); | 124 Ctx.setDisposeGlobalVariablesAfterLowering(false); |
120 // Parse the input LLVM IR file into a module. | 125 // Parse the input LLVM IR file into a module. |
121 llvm::SMDiagnostic Err; | 126 llvm::SMDiagnostic Err; |
122 TimerMarker T1(Ice::TimerStack::TT_parse, &Ctx); | 127 TimerMarker T1(Ice::TimerStack::TT_parse, &Ctx); |
| 128 #ifdef PNACL_LLVM |
123 llvm::DiagnosticHandlerFunction DiagnosticHandler = | 129 llvm::DiagnosticHandlerFunction DiagnosticHandler = |
124 Flags.getLLVMVerboseErrors() | 130 Flags.getLLVMVerboseErrors() |
125 ? redirectNaClDiagnosticToStream(llvm::errs()) | 131 ? redirectNaClDiagnosticToStream(llvm::errs()) |
126 : nullptr; | 132 : nullptr; |
127 std::unique_ptr<llvm::Module> Mod = | 133 std::unique_ptr<llvm::Module> Mod = |
128 NaClParseIRFile(IRFilename, Flags.getInputFileFormat(), Err, | 134 NaClParseIRFile(IRFilename, Flags.getInputFileFormat(), Err, |
129 llvm::getGlobalContext(), DiagnosticHandler); | 135 llvm::getGlobalContext(), DiagnosticHandler); |
| 136 #else // !PNACL_LLVM |
| 137 llvm::LLVMContext Context; |
| 138 std::unique_ptr<llvm::Module> Mod = parseIRFile(IRFilename, Err, Context); |
| 139 #endif // !PNACL_LLVM |
130 if (!Mod) { | 140 if (!Mod) { |
131 Err.print(Flags.getAppName().c_str(), llvm::errs()); | 141 Err.print(Flags.getAppName().c_str(), llvm::errs()); |
132 Ctx.getErrorStatus()->assign(EC_Bitcode); | 142 Ctx.getErrorStatus()->assign(EC_Bitcode); |
133 Ctx.waitForWorkerThreads(); | 143 Ctx.waitForWorkerThreads(); |
134 return; | 144 return; |
135 } | 145 } |
136 | 146 |
137 std::unique_ptr<Converter> Converter(new class Converter(Mod.get(), &Ctx)); | 147 std::unique_ptr<Converter> Converter(new class Converter(Mod.get(), &Ctx)); |
138 Converter->convertToIce(); | 148 Converter->convertToIce(); |
139 Translator.reset(Converter.release()); | 149 Translator.reset(Converter.release()); |
(...skipping 25 matching lines...) Expand all Loading... |
165 Ctx.dumpTimers(); | 175 Ctx.dumpTimers(); |
166 | 176 |
167 if (getFlags().getTimeEachFunction()) { | 177 if (getFlags().getTimeEachFunction()) { |
168 constexpr bool NoDumpCumulative = false; | 178 constexpr bool NoDumpCumulative = false; |
169 Ctx.dumpTimers(GlobalContext::TSK_Funcs, NoDumpCumulative); | 179 Ctx.dumpTimers(GlobalContext::TSK_Funcs, NoDumpCumulative); |
170 } | 180 } |
171 Ctx.dumpStats(); | 181 Ctx.dumpStats(); |
172 } | 182 } |
173 | 183 |
174 } // end of namespace Ice | 184 } // end of namespace Ice |
OLD | NEW |