<div dir="ltr">I'm not sure that's the right change. To me, the output in question is not error / diagnostic output, and thus shouldn't go to stderr.<div><br></div><div style>Two ways to fix this I see:</div><div style>
1. fix flushing behavior in Windows to match what's happening on linux</div><div style>2. introduce a flag that switches off all output from the tooling apart from diagnostics (that might be useful anyway)</div><div style>
<br></div><div style>Cheers,</div><div style>/Manuel</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Feb 21, 2013 at 6:15 PM, Thompson, John <span dir="ltr"><<a href="mailto:John_Thompson@playstation.sony.com" target="_blank">John_Thompson@playstation.sony.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal">On Windows, at least, when I run a tool such as modularize and redirect the outputs to a file, such as:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">modularize testIncludes.txt -x c++ >modularizeout.txt 2>&1<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">the stderr and stdout outputs don’t mix up correctly, presumably because the streams flush at different times.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Locally, I made the following change to work around this, sending a couple key messages to stderr instead:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Index: lib/Tooling/Tooling.cpp<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- lib/Tooling/Tooling.cpp     (revision 175711)<u></u><u></u></p>
<p class="MsoNormal">+++ lib/Tooling/Tooling.cpp     (working copy)<u></u><u></u></p>
<p class="MsoNormal">@@ -295,14 +295,14 @@<u></u><u></u></p>
<p class="MsoNormal">       ArgsAdjuster->Adjust(CompileCommands[I].second.CommandLine);<u></u><u></u></p>
<p class="MsoNormal">     assert(!CommandLine.empty());<u></u><u></u></p>
<p class="MsoNormal">     CommandLine[0] = MainExecutable;<u></u><u></u></p>
<p class="MsoNormal">-    llvm::outs() << "Processing: " << File << ".\n";<u></u><u></u></p>
<p class="MsoNormal">+    llvm::errs() << "Processing: " << File << ".\n";<u></u><u></u></p>
<p class="MsoNormal">     ToolInvocation Invocation(CommandLine, ActionFactory->create(), &Files);<u></u><u></u></p>
<p class="MsoNormal">     for (int I = 0, E = MappedFileContents.size(); I != E; ++I) {<u></u><u></u></p>
<p class="MsoNormal">       Invocation.mapVirtualFile(MappedFileContents[I].first,<u></u><u></u></p>
<p class="MsoNormal">                                MappedFileContents[I].second);<u></u><u></u></p>
<p class="MsoNormal">     }<u></u><u></u></p>
<p class="MsoNormal">     if (!Invocation.run()) {<u></u><u></u></p>
<p class="MsoNormal">-      llvm::outs() << "Error while processing " << File << ".\n";<u></u><u></u></p>
<p class="MsoNormal">+      llvm::errs() << "Error while processing " << File << ".\n";<u></u><u></u></p>
<p class="MsoNormal">       ProcessingFailed = true;<u></u><u></u></p>
<p class="MsoNormal">     }<u></u><u></u></p>
<p class="MsoNormal">   }<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Would this have a negative effect if I checked it in as-is, or should I add an option to the class to switch the output, or something else, or just leave it alone?<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Thanks.<span class="HOEnZb"><font color="#888888"><u></u><u></u></font></span></p><span class="HOEnZb"><font color="#888888">
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">-John<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
</font></span></div>
</div>

<br>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div>