зеркало из https://github.com/microsoft/clang-1.git
[modules] Check for delegating constructor cycles when building a module and don't write them out to the module file.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177000 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
2d1b09641e
Коммит
975d353997
|
@ -616,6 +616,12 @@ void Sema::ActOnEndOfTranslationUnit() {
|
|||
<< I->first;
|
||||
}
|
||||
|
||||
if (LangOpts.CPlusPlus11 &&
|
||||
Diags.getDiagnosticLevel(diag::warn_delegating_ctor_cycle,
|
||||
SourceLocation())
|
||||
!= DiagnosticsEngine::Ignored)
|
||||
CheckDelegatingCtorCycles();
|
||||
|
||||
if (TUKind == TU_Module) {
|
||||
// If we are building a module, resolve all of the exported declarations
|
||||
// now.
|
||||
|
@ -700,12 +706,6 @@ void Sema::ActOnEndOfTranslationUnit() {
|
|||
|
||||
}
|
||||
|
||||
if (LangOpts.CPlusPlus11 &&
|
||||
Diags.getDiagnosticLevel(diag::warn_delegating_ctor_cycle,
|
||||
SourceLocation())
|
||||
!= DiagnosticsEngine::Ignored)
|
||||
CheckDelegatingCtorCycles();
|
||||
|
||||
// If there were errors, disable 'unused' warnings since they will mostly be
|
||||
// noise.
|
||||
if (!Diags.hasErrorOccurred()) {
|
||||
|
|
|
@ -3464,6 +3464,8 @@ void ASTWriter::WriteASTCore(Sema &SemaRef,
|
|||
Module *WritingModule) {
|
||||
using namespace llvm;
|
||||
|
||||
bool isModule = WritingModule != 0;
|
||||
|
||||
// Make sure that the AST reader knows to finalize itself.
|
||||
if (Chain)
|
||||
Chain->finalizeForWriting();
|
||||
|
@ -3535,7 +3537,8 @@ void ASTWriter::WriteASTCore(Sema &SemaRef,
|
|||
// Build a record containing all of the delegating constructors we still need
|
||||
// to resolve.
|
||||
RecordData DelegatingCtorDecls;
|
||||
AddLazyVectorDecls(*this, SemaRef.DelegatingCtorDecls, DelegatingCtorDecls);
|
||||
if (!isModule)
|
||||
AddLazyVectorDecls(*this, SemaRef.DelegatingCtorDecls, DelegatingCtorDecls);
|
||||
|
||||
// Write the set of weak, undeclared identifiers. We always write the
|
||||
// entire table, since later PCH files in a PCH chain are only interested in
|
||||
|
@ -3770,11 +3773,11 @@ void ASTWriter::WriteASTCore(Sema &SemaRef,
|
|||
Stream.EmitRecordWithBlob(ModuleOffsetMapAbbrev, Record,
|
||||
Buffer.data(), Buffer.size());
|
||||
}
|
||||
WritePreprocessor(PP, WritingModule != 0);
|
||||
WritePreprocessor(PP, isModule);
|
||||
WriteHeaderSearch(PP.getHeaderSearchInfo(), isysroot);
|
||||
WriteSelectors(SemaRef);
|
||||
WriteReferencedSelectorsPool(SemaRef);
|
||||
WriteIdentifierTable(PP, SemaRef.IdResolver, WritingModule != 0);
|
||||
WriteIdentifierTable(PP, SemaRef.IdResolver, isModule);
|
||||
WriteFPPragmaOptions(SemaRef.getFPOptions());
|
||||
WriteOpenCLExtensions(SemaRef);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче