summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r--clang/lib/CodeGen/CodeGenModule.cpp44
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);
OpenPOWER on IntegriCloud