[cfe-commits] r84825 - /cfe/trunk/tools/CIndex/CIndex.cpp
Ted Kremenek
kremenek at apple.com
Sun Oct 25 19:23:12 PDT 2009
That's true. raw_stderr_ostream flushes after every write.
On Oct 25, 2009, at 3:58 PM, Daniel Dunbar wrote:
> Hi Ted,
>
> The flush() calls on llvm::errs() should not be necessary?
>
> - Daniel
>
> On Wed, Oct 21, 2009 at 8:24 PM, Ted Kremenek <kremenek at apple.com>
> wrote:
>> Author: kremenek
>> Date: Wed Oct 21 22:24:01 2009
>> New Revision: 84825
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=84825&view=rev
>> Log:
>> Add some explanatory diagnostics when
>> clang_createTranslationUnitFromSource fails.
>>
>> Modified:
>> cfe/trunk/tools/CIndex/CIndex.cpp
>>
>> Modified: cfe/trunk/tools/CIndex/CIndex.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/CIndex/CIndex.cpp?rev=84825&r1=84824&r2=84825&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>> --- cfe/trunk/tools/CIndex/CIndex.cpp (original)
>> +++ cfe/trunk/tools/CIndex/CIndex.cpp Wed Oct 21 22:24:01 2009
>> @@ -27,6 +27,7 @@
>> #include "llvm/Support/MemoryBuffer.h"
>> #include "llvm/System/Path.h"
>> #include "llvm/System/Program.h"
>> +#include "llvm/Support/raw_ostream.h"
>>
>> #include <cstdio>
>> #include <vector>
>> @@ -372,11 +373,19 @@
>> std::string astName(ast_filename);
>> std::string ErrMsg;
>>
>> - return ASTUnit::LoadFromPCHFile(astName, &ErrMsg,
>> - CXXIdx->getDisplayDiagnostics() ?
>> - NULL : new
>> IgnoreDiagnosticsClient(),
>> - CXXIdx->getOnlyLocalDecls(),
>> - /* UseBumpAllocator = */ true);
>> + CXTranslationUnit TU =
>> + ASTUnit::LoadFromPCHFile(astName, &ErrMsg,
>> + CXXIdx->getDisplayDiagnostics() ?
>> + NULL : new IgnoreDiagnosticsClient(),
>> + CXXIdx->getOnlyLocalDecls(),
>> + /* UseBumpAllocator = */ true);
>> +
>> + if (CXXIdx->getDisplayDiagnostics() && !ErrMsg.empty()) {
>> + (llvm::errs() << "clang_createTranslationUnit: " << ErrMsg
>> + << '\n').flush();
>> + }
>> +
>> + return TU;
>> }
>>
>> CXTranslationUnit clang_createTranslationUnitFromSourceFile(
>> @@ -429,10 +438,21 @@
>>
>> #ifndef LLVM_ON_WIN32
>> llvm::sys::Path DevNull("/dev/null");
>> + std::string ErrMsg;
>> const llvm::sys::Path *Redirects[] = { &DevNull, &DevNull,
>> &DevNull, NULL };
>> - llvm::sys::Program::ExecuteAndWait(ClangPath, &argv[0], NULL,
>> - !CXXIdx->getDisplayDiagnostics
>> () ?
>> - &Redirects[0] : NULL);
>> + llvm::sys::Program::ExecuteAndWait(ClangPath, &argv[0], /* env
>> */ NULL,
>> + /* redirects */ !CXXIdx->getDisplayDiagnostics() ? &Redirects
>> [0] : NULL,
>> + /* secondsToWait */ 0, /* memoryLimits */ 0, &ErrMsg);
>> +
>> + if (CXXIdx->getDisplayDiagnostics() && !ErrMsg.empty()) {
>> + llvm::errs() << "clang_createTranslationUnitFromSourceFile: "
>> << ErrMsg
>> + << '\n' << "Arguments: \n";
>> + for (std::vector<const char*>::iterator I = argv.begin(), E =
>> argv.end();
>> + I!=E; ++I)
>> + if (*I) llvm::errs() << ' ' << *I << '\n';
>> +
>> + (llvm::errs() << '\n').flush();
>> + }
>> #else
>> // FIXME: I don't know what is the equivalent '/dev/null'
>> redirect for
>> // Windows for this API.
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
More information about the cfe-commits
mailing list