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

Side by Side Diff: src/IceCompileServer.cpp

Issue 1584923002: Subzero: Fix -build-atts option. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 4 years, 11 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 unified diff | Download patch
« no previous file with comments | « no previous file | src/IceCompiler.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===- subzero/src/IceCompileServer.cpp - Compile server ------------------===// 1 //===- subzero/src/IceCompileServer.cpp - Compile server ------------------===//
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 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 (void)Written; // If something went wrong, we deliberately just give up. 120 (void)Written; // If something went wrong, we deliberately just give up.
121 121
122 // If we reached here, we are failing ungracefully. Run the interrupt handlers 122 // If we reached here, we are failing ungracefully. Run the interrupt handlers
123 // to make sure any special cleanups get done, in particular that we remove 123 // to make sure any special cleanups get done, in particular that we remove
124 // files registered with RemoveFileOnSignal. 124 // files registered with RemoveFileOnSignal.
125 llvm::sys::RunInterruptHandlers(); 125 llvm::sys::RunInterruptHandlers();
126 126
127 exit(0); 127 exit(0);
128 } 128 }
129 129
130 struct {
131 const char *FlagName;
132 bool FlagValue;
133 } ConditionalBuildAttributes[] = {
134 {"dump", BuildDefs::dump()},
135 {"llvm_cl", BuildDefs::llvmCl()},
136 {"llvm_ir", BuildDefs::llvmIr()},
137 {"llvm_ir_as_input", BuildDefs::llvmIrAsInput()},
138 {"minimal_build", BuildDefs::minimal()},
139 {"browser_mode", BuildDefs::browser()}};
140
141 /// Dumps values of build attributes to Stream if Stream is non-null.
142 void dumpBuildAttributes(Ostream &Str) {
143 // List the supported targets.
144 #define SUBZERO_TARGET(TARGET) Str << "target_" #TARGET << "\n";
145 #include "llvm/Config/SZTargets.def"
146 const char *Prefix[2] = {"no", "allow"};
147 for (size_t i = 0; i < llvm::array_lengthof(ConditionalBuildAttributes);
148 ++i) {
149 const auto &A = ConditionalBuildAttributes[i];
150 Str << Prefix[A.FlagValue] << "_" << A.FlagName << "\n";
151 }
152 }
153
130 } // end of anonymous namespace 154 } // end of anonymous namespace
131 155
132 void CLCompileServer::run() { 156 void CLCompileServer::run() {
133 if (BuildDefs::dump()) { 157 if (BuildDefs::dump()) {
134 llvm::sys::PrintStackTraceOnErrorSignal(); 158 llvm::sys::PrintStackTraceOnErrorSignal();
135 } 159 }
136 ClFlags::parseFlags(argc, argv); 160 ClFlags::parseFlags(argc, argv);
137 ClFlags Flags; 161 ClFlags Flags;
138 ClFlagsExtra ExtraFlags; 162 ClFlagsExtra ExtraFlags;
139 ClFlags::getParsedClFlags(Flags); 163 ClFlags::getParsedClFlags(Flags);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 (!BuildDefs::minimal() && ExtraFlags.getBitcodeAsText()) 215 (!BuildDefs::minimal() && ExtraFlags.getBitcodeAsText())
192 ? TextDataStreamer::create(ExtraFlags.getIRFilename(), &StrError) 216 ? TextDataStreamer::create(ExtraFlags.getIRFilename(), &StrError)
193 : llvm::getDataFileStreamer(ExtraFlags.getIRFilename(), &StrError)); 217 : llvm::getDataFileStreamer(ExtraFlags.getIRFilename(), &StrError));
194 if (!StrError.empty() || !InputStream) { 218 if (!StrError.empty() || !InputStream) {
195 llvm::SMDiagnostic Err(ExtraFlags.getIRFilename(), 219 llvm::SMDiagnostic Err(ExtraFlags.getIRFilename(),
196 llvm::SourceMgr::DK_Error, StrError); 220 llvm::SourceMgr::DK_Error, StrError);
197 Err.print(ExtraFlags.getAppName().c_str(), *Ls); 221 Err.print(ExtraFlags.getAppName().c_str(), *Ls);
198 return transferErrorCode(getReturnValue(ExtraFlags, Ice::EC_Bitcode)); 222 return transferErrorCode(getReturnValue(ExtraFlags, Ice::EC_Bitcode));
199 } 223 }
200 224
225 if (ExtraFlags.getGenerateBuildAtts()) {
226 dumpBuildAttributes(*Os.get());
227 return transferErrorCode(getReturnValue(ExtraFlags, Ice::EC_None));
228 }
229
201 Ctx.reset( 230 Ctx.reset(
202 new GlobalContext(Ls.get(), Os.get(), Ls.get(), ELFStr.get(), Flags)); 231 new GlobalContext(Ls.get(), Os.get(), Ls.get(), ELFStr.get(), Flags));
203 if (Ctx->getFlags().getNumTranslationThreads() != 0) { 232 if (Ctx->getFlags().getNumTranslationThreads() != 0) {
204 std::thread CompileThread([this, &ExtraFlags, &InputStream]() { 233 std::thread CompileThread([this, &ExtraFlags, &InputStream]() {
205 Ctx->initParserThread(); 234 Ctx->initParserThread();
206 getCompiler().run(ExtraFlags, *Ctx.get(), std::move(InputStream)); 235 getCompiler().run(ExtraFlags, *Ctx.get(), std::move(InputStream));
207 }); 236 });
208 CompileThread.join(); 237 CompileThread.join();
209 } else { 238 } else {
210 getCompiler().run(ExtraFlags, *Ctx.get(), std::move(InputStream)); 239 getCompiler().run(ExtraFlags, *Ctx.get(), std::move(InputStream));
211 } 240 }
212 transferErrorCode(getReturnValue( 241 transferErrorCode(getReturnValue(
213 ExtraFlags, static_cast<ErrorCodes>(Ctx->getErrorStatus()->value()))); 242 ExtraFlags, static_cast<ErrorCodes>(Ctx->getErrorStatus()->value())));
214 } 243 }
215 244
216 } // end of namespace Ice 245 } // end of namespace Ice
OLDNEW
« no previous file with comments | « no previous file | src/IceCompiler.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698