[cfe-commits] r169021 - in /cfe/trunk: include/clang/Basic/SourceManager.h include/clang/Frontend/DiagnosticRenderer.h include/clang/Frontend/TextDiagnostic.h include/clang/Lex/PreprocessorOptions.h lib/Frontend/CompilerInstance.cpp lib/Frontend/DiagnosticRenderer.cpp lib/Frontend/TextDiagnostic.cpp test/Modules/build-fail-notes.m test/Modules/cycles.c test/Modules/epic-fail.m

Douglas Gregor dgregor at apple.com
Fri Nov 30 14:13:05 PST 2012


On Nov 30, 2012, at 12:00 PM, Dmitri Gribenko <gribozavr at gmail.com> wrote:

> Hi Doug,
> 
> On Fri, Nov 30, 2012 at 8:38 PM, Douglas Gregor <dgregor at apple.com> wrote:
>> Author: dgregor
>> Date: Fri Nov 30 12:38:50 2012
>> New Revision: 169021
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=169021&view=rev
>> Log:
>> When an error occurs while building a module on demand, provide "While
>> building module 'Foo' imported from..." notes (the same we we provide
>> "In file included from..." notes) in the diagnostic, so that we know
>> how this module got included in the first place. This is part of
>> <rdar://problem/12696425>.
>> 
>> Added:
>>    cfe/trunk/test/Modules/build-fail-notes.m
>> Modified:
>>    cfe/trunk/include/clang/Basic/SourceManager.h
>>    cfe/trunk/include/clang/Frontend/DiagnosticRenderer.h
>>    cfe/trunk/include/clang/Frontend/TextDiagnostic.h
>>    cfe/trunk/include/clang/Lex/PreprocessorOptions.h
>>    cfe/trunk/lib/Frontend/CompilerInstance.cpp
>>    cfe/trunk/lib/Frontend/DiagnosticRenderer.cpp
>>    cfe/trunk/lib/Frontend/TextDiagnostic.cpp
>>    cfe/trunk/test/Modules/cycles.c
>>    cfe/trunk/test/Modules/epic-fail.m
>> 
>> Modified: cfe/trunk/include/clang/Basic/SourceManager.h
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/SourceManager.h?rev=169021&r1=169020&r2=169021&view=diff
>> ==============================================================================
>> --- cfe/trunk/include/clang/Basic/SourceManager.h (original)
>> +++ cfe/trunk/include/clang/Basic/SourceManager.h Fri Nov 30 12:38:50 2012
>> @@ -40,6 +40,7 @@
>> #include "clang/Basic/SourceLocation.h"
>> #include "llvm/Support/Allocator.h"
>> #include "llvm/Support/DataTypes.h"
>> +#include "llvm/ADT/ArrayRef.h"
>> #include "llvm/ADT/PointerIntPair.h"
>> #include "llvm/ADT/PointerUnion.h"
>> #include "llvm/ADT/IntrusiveRefCntPtr.h"
>> @@ -508,6 +509,11 @@
>> 
>> };
>> 
>> +/// \brief The path used when building modules on demand, which is used
>> +/// to provide a link between the source managers of the different compiler
>> +/// instances.
>> +typedef llvm::ArrayRef<std::pair<std::string, FullSourceLoc> > ModuleBuildPath;
>> +
> 
> It might be the case that I am misunderstanding this abstraction, but
> it might be better to call it 'ModuleBuildStack' or
> 'ModuleBuildBacktrace'.

ModuleBuildStack is better, thanks!

>> /// \brief This class handles loading and caching of source files into memory.
>> ///
>> /// This object owns the MemoryBuffer objects for all of the loaded
>> @@ -645,6 +651,15 @@
>> 
>>   mutable llvm::DenseMap<FileID, MacroArgsMap *> MacroArgsCacheMap;
>> 
>> +  /// \brief The path of modules being built, which is used to detect
>> +  /// cycles in the module dependency graph as modules are being built, as
>> +  /// well as to describe
> 
> Incomplete sentence here.


r169045.

	- Doug



More information about the cfe-commits mailing list