tra added inline comments. ================ Comment at: lib/Driver/Driver.cpp:652 @@ -640,3 +651,3 @@ SmallVector<std::pair<int, const Command *>, 4> FailingCommands; - C.ExecuteJobs(C.getJobs(), FailingCommands); + C.ExecuteJobs(C.getJobs(), /* StopOnFailure = */ false, FailingCommands); ---------------- jlebar wrote: > tra wrote: > > As far as I can tell, we don't do anything interesting if we've detected > > that *any* of the commands have failed. That suggests that doing anything > > beyond the first failing command does not do us any good. That would > > suggest that we may really want StopOnFailure=true here. > > > > 'false' would preserve current behavior, though. > > > > In either case I'm OK with a constant here. > Sorry, I think I'm misunderstanding something. Would you mind rephrasing > this? > > > As far as I can tell, we don't do anything interesting if we've detected > > that *any* of the commands have failed. That suggests that doing anything > > beyond the first failing command does not do us any good. > > The scenario I thought this change applied to was: > > External tool crashes during a call to ExecuteJobs() (not this one). We now > want to output preprocessed inputs, so we run this code, which again calls > ExecuteJobs(), but these jobs only run the preprocessor on the inputs. > > Now suppose one of those preprocessor jobs fails. Maybe it has a bad > preprocessor directive, or maybe #error would be enough. It seems to me in > this case that we should continue running the other preprocessor jobs, so we > dump as much debug info as we can. > > Note that if the StopOnFailure flag is false, afaict it's entirely possible > for us to have two inputs, one of which has a pp error and the other of which > causes a compiler crash -- if we stopped on failure here, we wouldn't output > anything for the second input, which is the one we're interested in. > > Sorry again, I'm sure I'm missing something. Look at the lines below. If there are any failing commands we just report an error and return. Even if there are multiple preprocessor jobs and if some of them succeed, we would not get to use their output.
http://reviews.llvm.org/D16514 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits