diff options
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 281da3fd65b..f4628fc0d33 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -499,19 +499,6 @@ void CodeGenModule::Release() { EmitVersionIdentMetadata(); EmitTargetMetadata(); - - // Emit any deferred diagnostics gathered during codegen. We didn't emit them - // when we first discovered them because that would have halted codegen, - // preventing us from gathering other deferred diags. - for (const PartialDiagnosticAt &DiagAt : DeferredDiags) { - SourceLocation Loc = DiagAt.first; - const PartialDiagnostic &PD = DiagAt.second; - DiagnosticBuilder Builder(getDiags().Report(Loc, PD.getDiagID())); - PD.Emit(Builder); - } - // Clear the deferred diags so they don't outlive the ASTContext's - // PartialDiagnostic allocator. - DeferredDiags.clear(); } void CodeGenModule::UpdateCompletedType(const TagDecl *TD) { @@ -2913,37 +2900,6 @@ void CodeGenModule::EmitGlobalFunctionDefinition(GlobalDecl GD, llvm::GlobalValue *GV) { const auto *D = cast<FunctionDecl>(GD.getDecl()); - // Emit this function's deferred diagnostics, if none of them are errors. If - // any of them are errors, don't codegen the function, but also don't emit any - // of the diagnostics just yet. Emitting an error during codegen stops - // further codegen, and we want to display as many deferred diags as possible. - // We'll emit the now twice-deferred diags at the very end of codegen. - // - // (If a function has both error and non-error diags, we don't emit the - // non-error diags here, because order can be significant, e.g. with notes - // that follow errors.) - auto Diags = D->takeDeferredDiags(); - if (auto *Templ = D->getPrimaryTemplate()) { - auto TemplDiags = Templ->getAsFunction()->takeDeferredDiags(); - Diags.insert(Diags.end(), TemplDiags.begin(), TemplDiags.end()); - } - bool HasError = llvm::any_of(Diags, [this](const PartialDiagnosticAt &PDAt) { - return getDiags().getDiagnosticLevel(PDAt.second.getDiagID(), PDAt.first) >= - DiagnosticsEngine::Error; - }); - if (HasError) { - DeferredDiags.insert(DeferredDiags.end(), - std::make_move_iterator(Diags.begin()), - std::make_move_iterator(Diags.end())); - return; - } - for (PartialDiagnosticAt &PDAt : Diags) { - const SourceLocation &Loc = PDAt.first; - const PartialDiagnostic &PD = PDAt.second; - DiagnosticBuilder Builder(getDiags().Report(Loc, PD.getDiagID())); - PD.Emit(Builder); - } - // Compute the function info and LLVM type. const CGFunctionInfo &FI = getTypes().arrangeGlobalDeclaration(GD); llvm::FunctionType *Ty = getTypes().GetFunctionType(FI); |