jlebar updated this revision to Diff 73578. jlebar added a comment. Update comment.
https://reviews.llvm.org/D25260 Files: clang/include/clang/AST/ASTContext.h clang/lib/CodeGen/CodeGenModule.cpp Index: clang/lib/CodeGen/CodeGenModule.cpp =================================================================== --- clang/lib/CodeGen/CodeGenModule.cpp +++ clang/lib/CodeGen/CodeGenModule.cpp @@ -509,6 +509,9 @@ 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) { Index: clang/include/clang/AST/ASTContext.h =================================================================== --- clang/include/clang/AST/ASTContext.h +++ clang/include/clang/AST/ASTContext.h @@ -325,12 +325,6 @@ }; llvm::DenseMap<Module*, PerModuleInitializers*> ModuleInitializers; - /// Diagnostics that are emitted if and only if the given function is - /// codegen'ed. Access these through FunctionDecl::addDeferredDiag() and - /// FunctionDecl::takeDeferredDiags(). - llvm::DenseMap<const FunctionDecl *, std::vector<PartialDiagnosticAt>> - DeferredDiags; - public: /// \brief A type synonym for the TemplateOrInstantiation mapping. typedef llvm::PointerUnion<VarTemplateDecl *, MemberSpecializationInfo *> @@ -454,6 +448,12 @@ /// \brief Allocator for partial diagnostics. PartialDiagnostic::StorageAllocator DiagAllocator; + /// Diagnostics that are emitted if and only if the given function is + /// codegen'ed. Access these through FunctionDecl::addDeferredDiag() and + /// FunctionDecl::takeDeferredDiags(). + llvm::DenseMap<const FunctionDecl *, std::vector<PartialDiagnosticAt>> + DeferredDiags; + /// \brief The current C++ ABI. std::unique_ptr<CXXABI> ABI; CXXABI *createCXXABI(const TargetInfo &T);
Index: clang/lib/CodeGen/CodeGenModule.cpp =================================================================== --- clang/lib/CodeGen/CodeGenModule.cpp +++ clang/lib/CodeGen/CodeGenModule.cpp @@ -509,6 +509,9 @@ 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) { Index: clang/include/clang/AST/ASTContext.h =================================================================== --- clang/include/clang/AST/ASTContext.h +++ clang/include/clang/AST/ASTContext.h @@ -325,12 +325,6 @@ }; llvm::DenseMap<Module*, PerModuleInitializers*> ModuleInitializers; - /// Diagnostics that are emitted if and only if the given function is - /// codegen'ed. Access these through FunctionDecl::addDeferredDiag() and - /// FunctionDecl::takeDeferredDiags(). - llvm::DenseMap<const FunctionDecl *, std::vector<PartialDiagnosticAt>> - DeferredDiags; - public: /// \brief A type synonym for the TemplateOrInstantiation mapping. typedef llvm::PointerUnion<VarTemplateDecl *, MemberSpecializationInfo *> @@ -454,6 +448,12 @@ /// \brief Allocator for partial diagnostics. PartialDiagnostic::StorageAllocator DiagAllocator; + /// Diagnostics that are emitted if and only if the given function is + /// codegen'ed. Access these through FunctionDecl::addDeferredDiag() and + /// FunctionDecl::takeDeferredDiags(). + llvm::DenseMap<const FunctionDecl *, std::vector<PartialDiagnosticAt>> + DeferredDiags; + /// \brief The current C++ ABI. std::unique_ptr<CXXABI> ABI; CXXABI *createCXXABI(const TargetInfo &T);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits