jlebar 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);
 
----------------
tra wrote:
> 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.
> 
Oh.

Thanks.  :)


http://reviews.llvm.org/D16514



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to