PR16933: Don't try to codegen things after we've seen errors.
Refactor the underlying code a bit to remove unnecessary calls to "hasErrorOccurred" & make them consistently at all the entry points to the IRGen ASTConsumer. llvm-svn: 188707
This commit is contained in:
@@ -66,10 +66,16 @@ namespace {
|
||||
}
|
||||
|
||||
virtual void HandleCXXStaticMemberVarInstantiation(VarDecl *VD) {
|
||||
if (Diags.hasErrorOccurred())
|
||||
return;
|
||||
|
||||
Builder->HandleCXXStaticMemberVarInstantiation(VD);
|
||||
}
|
||||
|
||||
virtual bool HandleTopLevelDecl(DeclGroupRef DG) {
|
||||
if (Diags.hasErrorOccurred())
|
||||
return true;
|
||||
|
||||
// Make sure to emit all elements of a Decl.
|
||||
for (DeclGroupRef::iterator I = DG.begin(), E = DG.end(); I != E; ++I)
|
||||
Builder->EmitTopLevelDecl(*I);
|
||||
@@ -81,6 +87,9 @@ namespace {
|
||||
/// client hack on the type, which can occur at any point in the file
|
||||
/// (because these can be defined in declspecs).
|
||||
virtual void HandleTagDeclDefinition(TagDecl *D) {
|
||||
if (Diags.hasErrorOccurred())
|
||||
return;
|
||||
|
||||
Builder->UpdateCompletedType(D);
|
||||
|
||||
// In C++, we may have member functions that need to be emitted at this
|
||||
@@ -98,6 +107,9 @@ namespace {
|
||||
}
|
||||
|
||||
virtual void HandleTagDeclRequiredDefinition(const TagDecl *D) LLVM_OVERRIDE {
|
||||
if (Diags.hasErrorOccurred())
|
||||
return;
|
||||
|
||||
if (CodeGen::CGDebugInfo *DI = Builder->getModuleDebugInfo())
|
||||
if (const RecordDecl *RD = dyn_cast<RecordDecl>(D))
|
||||
DI->completeRequiredType(RD);
|
||||
|
||||
Reference in New Issue
Block a user