On Feb 7, 2012, at 2:35 PM, Benjamin Kramer wrote: > > On 07.02.2012, at 23:00, Chad Rosier wrote: > >> Hi Ben, >> This change is causing a 8.85% compile-time regression for a number of the >> ObjC/ObjC++ benchmarks in SingleSource/UnitTests/. This was across the >> board for all architectures and all optimization levels. >> >> Here's the results for our -O0 -g -arch i386 configuration: >> >> Performance Regressions - Compile Time Δ Previous Current >> σ >> SingleSource/UnitTests/ObjC++/property-reference-object 8.85% 0.5877 >> 0.6397 0.0131 >> SingleSource/UnitTests/ObjC++/Hello 8.57% 0.5843 0.6344 0.0128 >> SingleSource/UnitTests/ObjC++/property-reference 7.54% 0.7052 0.7584 >> 0.0143 >> SingleSource/UnitTests/ObjC/exceptions-2 6.55% 0.3375 0.3596 0.0049 >> SingleSource/UnitTests/ObjC/trivial-interface 6.42% 0.3367 0.3583 >> 0.0046 >> SingleSource/UnitTests/ObjC/for-in 6.41% 0.3416 0.3635 0.0046 >> SingleSource/UnitTests/ObjC/exceptions-3 6.38% 0.3383 0.3599 0.0043 >> SingleSource/UnitTests/ObjC/exceptions-4 6.37% 0.3391 0.3607 0.0044 >> SingleSource/UnitTests/ObjC/synchronized 6.34% 0.3393 0.3608 0.0045 >> SingleSource/UnitTests/ObjC/property 6.32% 0.3561 0.3786 0.0049 >> SingleSource/UnitTests/ObjC/parameter-passing 6.08% 0.3670 0.3893 >> 0.0047 >> SingleSource/UnitTests/ObjC/instance-method-metadata 6.07% 0.3424 0.3632 >> 0.0048 >> SingleSource/UnitTests/ObjC/exceptions 5.77% 0.3521 0.3724 0.0047 >> SingleSource/UnitTests/ObjC/block-byref-aggr 4.29% 0.3635 0.3791 0.0044 >> >> Please take a look as soon as possible. > > Reverted in r150006 for now. It's not acceptable for a change like this to > change performance significantly. I have to come up with a more clever > solution to this.
Agreed. Thanks, Ben. > - Ben > >> >> Regards, >> Chad >> >> >> On Feb 4, 2012, at 4:31 AM, Benjamin Kramer wrote: >> >>> Author: d0k >>> Date: Sat Feb 4 06:31:12 2012 >>> New Revision: 149781 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=149781&view=rev >>> Log: >>> Move various diagnostic operator<< overloads out of line and remove >>> includes of Diagnostic.h. >>> >>> Fix all the files that depended on transitive includes of Diagnostic.h. >>> With this patch in place changing a diagnostic no longer requires a full >>> rebuild of the StaticAnalyzer. >>> >>> Modified: >>> cfe/trunk/include/clang/AST/ASTContext.h >>> cfe/trunk/include/clang/AST/Decl.h >>> cfe/trunk/include/clang/AST/DeclarationName.h >>> cfe/trunk/include/clang/AST/Mangle.h >>> cfe/trunk/include/clang/AST/NestedNameSpecifier.h >>> cfe/trunk/include/clang/AST/Type.h >>> cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h >>> cfe/trunk/include/clang/Sema/DelayedDiagnostic.h >>> cfe/trunk/include/clang/Sema/Sema.h >>> cfe/trunk/include/clang/Sema/SemaFixItUtils.h >>> cfe/trunk/include/clang/Serialization/ASTWriter.h >>> cfe/trunk/lib/AST/ASTContext.cpp >>> cfe/trunk/lib/AST/Decl.cpp >>> cfe/trunk/lib/AST/DeclCXX.cpp >>> cfe/trunk/lib/AST/DeclarationName.cpp >>> cfe/trunk/lib/AST/ExprConstant.cpp >>> cfe/trunk/lib/AST/ItaniumMangle.cpp >>> cfe/trunk/lib/AST/NestedNameSpecifier.cpp >>> cfe/trunk/lib/AST/Type.cpp >>> cfe/trunk/lib/CodeGen/CGCXXABI.cpp >>> cfe/trunk/lib/CodeGen/CGDebugInfo.cpp >>> cfe/trunk/lib/CodeGen/CodeGenTBAA.cpp >>> cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp >>> cfe/trunk/lib/Serialization/ASTWriter.cpp >>> cfe/trunk/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp >>> cfe/trunk/lib/StaticAnalyzer/Checkers/AttrNonNullChecker.cpp >>> cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp >>> cfe/trunk/lib/StaticAnalyzer/Checkers/DivZeroChecker.cpp >>> cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp >>> cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCAtSyncChecker.cpp >>> cfe/trunk/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp >>> cfe/trunk/lib/StaticAnalyzer/Checkers/StreamChecker.cpp >>> cfe/trunk/lib/StaticAnalyzer/Checkers/UnixAPIChecker.cpp >>> cfe/trunk/lib/StaticAnalyzer/Checkers/VLASizeChecker.cpp >>> cfe/trunk/lib/StaticAnalyzer/Core/AnalysisManager.cpp >>> cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp >>> cfe/trunk/lib/StaticAnalyzer/Core/CheckerRegistry.cpp >>> cfe/trunk/tools/libclang/IndexingContext.h >>> >>> Modified: cfe/trunk/include/clang/AST/ASTContext.h >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ASTContext.h?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/include/clang/AST/ASTContext.h (original) >>> +++ cfe/trunk/include/clang/AST/ASTContext.h Sat Feb 4 06:31:12 2012 >>> @@ -18,7 +18,6 @@ >>> #include "clang/Basic/IdentifierTable.h" >>> #include "clang/Basic/LangOptions.h" >>> #include "clang/Basic/OperatorKinds.h" >>> -#include "clang/Basic/PartialDiagnostic.h" >>> #include "clang/Basic/VersionTuple.h" >>> #include "clang/AST/Decl.h" >>> #include "clang/AST/NestedNameSpecifier.h" >>> >>> Modified: cfe/trunk/include/clang/AST/Decl.h >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Decl.h?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/include/clang/AST/Decl.h (original) >>> +++ cfe/trunk/include/clang/AST/Decl.h Sat Feb 4 06:31:12 2012 >>> @@ -41,7 +41,11 @@ >>> class UnresolvedSetImpl; >>> class LabelStmt; >>> class Module; >>> - >>> + >>> +// Forward declare PartialDiagnosticAt. >>> +// FIXME: This shouldn't be here. >>> +typedef std::pair<SourceLocation, PartialDiagnostic> PartialDiagnosticAt; >>> + >>> /// \brief A container of type source information. >>> /// >>> /// A client can read the relevant info using TypeLoc wrappers, e.g: >>> @@ -3175,18 +3179,11 @@ >>> >>> /// Insertion operator for diagnostics. This allows sending NamedDecl's >>> /// into a diagnostic with <<. >>> -inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, >>> - const NamedDecl* ND) { >>> - DB.AddTaggedVal(reinterpret_cast<intptr_t>(ND), >>> - DiagnosticsEngine::ak_nameddecl); >>> - return DB; >>> -} >>> -inline const PartialDiagnostic &operator<<(const PartialDiagnostic &PD, >>> - const NamedDecl* ND) { >>> - PD.AddTaggedVal(reinterpret_cast<intptr_t>(ND), >>> - DiagnosticsEngine::ak_nameddecl); >>> - return PD; >>> -} >>> +const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, >>> + const NamedDecl* ND); >>> + >>> +const PartialDiagnostic &operator<<(const PartialDiagnostic &PD, >>> + const NamedDecl* ND); >>> >>> template<typename decl_type> >>> void Redeclarable<decl_type>::setPreviousDeclaration(decl_type *PrevDecl) { >>> >>> Modified: cfe/trunk/include/clang/AST/DeclarationName.h >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclarationName.h?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/include/clang/AST/DeclarationName.h (original) >>> +++ cfe/trunk/include/clang/AST/DeclarationName.h Sat Feb 4 06:31:12 2012 >>> @@ -16,7 +16,6 @@ >>> #include "clang/Basic/IdentifierTable.h" >>> #include "clang/AST/Type.h" >>> #include "clang/AST/CanonicalType.h" >>> -#include "clang/Basic/PartialDiagnostic.h" >>> >>> namespace llvm { >>> template <typename T> struct DenseMapInfo; >>> @@ -517,24 +516,16 @@ >>> >>> /// Insertion operator for diagnostics. This allows sending >>> DeclarationName's >>> /// into a diagnostic with <<. >>> -inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, >>> - DeclarationName N) { >>> - DB.AddTaggedVal(N.getAsOpaqueInteger(), >>> - DiagnosticsEngine::ak_declarationname); >>> - return DB; >>> -} >>> +const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, >>> + DeclarationName N); >>> >>> /// Insertion operator for partial diagnostics. This allows binding >>> /// DeclarationName's into a partial diagnostic with <<. >>> -inline const PartialDiagnostic &operator<<(const PartialDiagnostic &PD, >>> - DeclarationName N) { >>> - PD.AddTaggedVal(N.getAsOpaqueInteger(), >>> - DiagnosticsEngine::ak_declarationname); >>> - return PD; >>> -} >>> +const PartialDiagnostic &operator<<(const PartialDiagnostic &PD, >>> + DeclarationName N); >>> >>> inline raw_ostream &operator<<(raw_ostream &OS, >>> - DeclarationNameInfo DNInfo) { >>> + DeclarationNameInfo DNInfo) { >>> DNInfo.printName(OS); >>> return OS; >>> } >>> >>> Modified: cfe/trunk/include/clang/AST/Mangle.h >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Mangle.h?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/include/clang/AST/Mangle.h (original) >>> +++ cfe/trunk/include/clang/AST/Mangle.h Sat Feb 4 06:31:12 2012 >>> @@ -27,6 +27,8 @@ >>> class CXXConstructorDecl; >>> class CXXDestructorDecl; >>> class CXXMethodDecl; >>> + class DeclContext; >>> + class DiagnosticsEngine; >>> class FunctionDecl; >>> class NamedDecl; >>> class ObjCMethodDecl; >>> >>> Modified: cfe/trunk/include/clang/AST/NestedNameSpecifier.h >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/NestedNameSpecifier.h?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/include/clang/AST/NestedNameSpecifier.h (original) >>> +++ cfe/trunk/include/clang/AST/NestedNameSpecifier.h Sat Feb 4 06:31:12 >>> 2012 >>> @@ -14,13 +14,14 @@ >>> #ifndef LLVM_CLANG_AST_NESTEDNAMESPECIFIER_H >>> #define LLVM_CLANG_AST_NESTEDNAMESPECIFIER_H >>> >>> -#include "clang/Basic/Diagnostic.h" >>> +#include "clang/Basic/SourceLocation.h" >>> #include "llvm/ADT/FoldingSet.h" >>> #include "llvm/ADT/PointerIntPair.h" >>> >>> namespace clang { >>> >>> class ASTContext; >>> +class DiagnosticBuilder; >>> class NamespaceAliasDecl; >>> class NamespaceDecl; >>> class IdentifierInfo; >>> @@ -464,12 +465,8 @@ >>> >>> /// Insertion operator for diagnostics. This allows sending >>> /// NestedNameSpecifiers into a diagnostic with <<. >>> -inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, >>> - NestedNameSpecifier *NNS) { >>> - DB.AddTaggedVal(reinterpret_cast<intptr_t>(NNS), >>> - DiagnosticsEngine::ak_nestednamespec); >>> - return DB; >>> -} >>> +const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, >>> + NestedNameSpecifier *NNS); >>> >>> } >>> >>> >>> Modified: cfe/trunk/include/clang/AST/Type.h >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Type.h?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/include/clang/AST/Type.h (original) >>> +++ cfe/trunk/include/clang/AST/Type.h Sat Feb 4 06:31:12 2012 >>> @@ -14,11 +14,9 @@ >>> #ifndef LLVM_CLANG_AST_TYPE_H >>> #define LLVM_CLANG_AST_TYPE_H >>> >>> -#include "clang/Basic/Diagnostic.h" >>> #include "clang/Basic/ExceptionSpecificationType.h" >>> #include "clang/Basic/IdentifierTable.h" >>> #include "clang/Basic/Linkage.h" >>> -#include "clang/Basic/PartialDiagnostic.h" >>> #include "clang/Basic/Visibility.h" >>> #include "clang/AST/NestedNameSpecifier.h" >>> #include "clang/AST/TemplateName.h" >>> @@ -94,6 +92,7 @@ >>> class ExtQuals; >>> class ExtQualsTypeCommonBase; >>> struct PrintingPolicy; >>> + class PartialDiagnostic; >>> >>> template <typename> class CanQual; >>> typedef CanQual<Type> CanQualType; >>> @@ -4799,21 +4798,11 @@ >>> >>> /// Insertion operator for diagnostics. This allows sending QualType's >>> into a >>> /// diagnostic with <<. >>> -inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, >>> - QualType T) { >>> - DB.AddTaggedVal(reinterpret_cast<intptr_t>(T.getAsOpaquePtr()), >>> - DiagnosticsEngine::ak_qualtype); >>> - return DB; >>> -} >>> +const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, QualType >>> T); >>> >>> /// Insertion operator for partial diagnostics. This allows sending >>> QualType's >>> /// into a diagnostic with <<. >>> -inline const PartialDiagnostic &operator<<(const PartialDiagnostic &PD, >>> - QualType T) { >>> - PD.AddTaggedVal(reinterpret_cast<intptr_t>(T.getAsOpaquePtr()), >>> - DiagnosticsEngine::ak_qualtype); >>> - return PD; >>> -} >>> +const PartialDiagnostic &operator<<(const PartialDiagnostic &PD, QualType >>> T); >>> >>> // Helper class template that is used by Type::getAs to ensure that one does >>> // not try to look through a qualified type to get to an array type. >>> >>> Modified: cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h (original) >>> +++ cfe/trunk/include/clang/Sema/CodeCompleteConsumer.h Sat Feb 4 06:31:12 >>> 2012 >>> @@ -24,6 +24,7 @@ >>> namespace clang { >>> >>> class Decl; >>> +class Preprocessor; >>> >>> /// \brief Default priority values for code-completion results based >>> /// on their kind. >>> >>> Modified: cfe/trunk/include/clang/Sema/DelayedDiagnostic.h >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/DelayedDiagnostic.h?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/include/clang/Sema/DelayedDiagnostic.h (original) >>> +++ cfe/trunk/include/clang/Sema/DelayedDiagnostic.h Sat Feb 4 06:31:12 >>> 2012 >>> @@ -22,6 +22,7 @@ >>> #define LLVM_CLANG_SEMA_DELAYED_DIAGNOSTIC_H >>> >>> #include "clang/AST/DeclCXX.h" >>> +#include "clang/Basic/PartialDiagnostic.h" >>> >>> namespace clang { >>> namespace sema { >>> >>> Modified: cfe/trunk/include/clang/Sema/Sema.h >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Sema.h?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/include/clang/Sema/Sema.h (original) >>> +++ cfe/trunk/include/clang/Sema/Sema.h Sat Feb 4 06:31:12 2012 >>> @@ -30,6 +30,7 @@ >>> #include "clang/AST/ExternalASTSource.h" >>> #include "clang/AST/TypeLoc.h" >>> #include "clang/Lex/ModuleLoader.h" >>> +#include "clang/Basic/PartialDiagnostic.h" >>> #include "clang/Basic/Specifiers.h" >>> #include "clang/Basic/TemplateKinds.h" >>> #include "clang/Basic/TypeTraits.h" >>> >>> Modified: cfe/trunk/include/clang/Sema/SemaFixItUtils.h >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/SemaFixItUtils.h?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/include/clang/Sema/SemaFixItUtils.h (original) >>> +++ cfe/trunk/include/clang/Sema/SemaFixItUtils.h Sat Feb 4 06:31:12 2012 >>> @@ -14,6 +14,7 @@ >>> #define LLVM_CLANG_SEMA_FIXITUTILS_H >>> >>> #include "clang/AST/Expr.h" >>> +#include "clang/Basic/Diagnostic.h" >>> >>> namespace clang { >>> >>> >>> Modified: cfe/trunk/include/clang/Serialization/ASTWriter.h >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ASTWriter.h?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/include/clang/Serialization/ASTWriter.h (original) >>> +++ cfe/trunk/include/clang/Serialization/ASTWriter.h Sat Feb 4 06:31:12 >>> 2012 >>> @@ -43,6 +43,7 @@ >>> class NestedNameSpecifier; >>> class CXXBaseSpecifier; >>> class CXXCtorInitializer; >>> +class DiagnosticsEngine; >>> class FPOptions; >>> class HeaderSearch; >>> class IdentifierResolver; >>> >>> Modified: cfe/trunk/lib/AST/ASTContext.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTContext.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/AST/ASTContext.cpp (original) >>> +++ cfe/trunk/lib/AST/ASTContext.cpp Sat Feb 4 06:31:12 2012 >>> @@ -24,6 +24,7 @@ >>> #include "clang/AST/RecordLayout.h" >>> #include "clang/AST/Mangle.h" >>> #include "clang/Basic/Builtins.h" >>> +#include "clang/Basic/PartialDiagnostic.h" >>> #include "clang/Basic/SourceManager.h" >>> #include "clang/Basic/TargetInfo.h" >>> #include "llvm/ADT/SmallString.h" >>> >>> Modified: cfe/trunk/lib/AST/Decl.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Decl.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/AST/Decl.cpp (original) >>> +++ cfe/trunk/lib/AST/Decl.cpp Sat Feb 4 06:31:12 2012 >>> @@ -25,6 +25,7 @@ >>> #include "clang/Basic/Builtins.h" >>> #include "clang/Basic/IdentifierTable.h" >>> #include "clang/Basic/Module.h" >>> +#include "clang/Basic/PartialDiagnostic.h" >>> #include "clang/Basic/Specifiers.h" >>> #include "clang/Basic/TargetInfo.h" >>> #include "llvm/Support/ErrorHandling.h" >>> @@ -2959,3 +2960,17 @@ >>> >>> return SourceRange(getLocation(), getIdentifierLocs().back()); >>> } >>> + >>> +const DiagnosticBuilder &clang::operator<<(const DiagnosticBuilder &DB, >>> + const NamedDecl* ND) { >>> + DB.AddTaggedVal(reinterpret_cast<intptr_t>(ND), >>> + DiagnosticsEngine::ak_nameddecl); >>> + return DB; >>> +} >>> + >>> +const PartialDiagnostic &clang::operator<<(const PartialDiagnostic &PD, >>> + const NamedDecl* ND) { >>> + PD.AddTaggedVal(reinterpret_cast<intptr_t>(ND), >>> + DiagnosticsEngine::ak_nameddecl); >>> + return PD; >>> +} >>> >>> Modified: cfe/trunk/lib/AST/DeclCXX.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclCXX.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/AST/DeclCXX.cpp (original) >>> +++ cfe/trunk/lib/AST/DeclCXX.cpp Sat Feb 4 06:31:12 2012 >>> @@ -20,6 +20,7 @@ >>> #include "clang/AST/ExprCXX.h" >>> #include "clang/AST/TypeLoc.h" >>> #include "clang/Basic/IdentifierTable.h" >>> +#include "clang/Basic/PartialDiagnostic.h" >>> #include "llvm/ADT/STLExtras.h" >>> #include "llvm/ADT/SmallPtrSet.h" >>> using namespace clang; >>> >>> Modified: cfe/trunk/lib/AST/DeclarationName.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclarationName.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/AST/DeclarationName.cpp (original) >>> +++ cfe/trunk/lib/AST/DeclarationName.cpp Sat Feb 4 06:31:12 2012 >>> @@ -18,6 +18,7 @@ >>> #include "clang/AST/TypeLoc.h" >>> #include "clang/AST/TypeOrdering.h" >>> #include "clang/Basic/IdentifierTable.h" >>> +#include "clang/Basic/PartialDiagnostic.h" >>> #include "llvm/ADT/DenseMap.h" >>> #include "llvm/ADT/FoldingSet.h" >>> #include "llvm/Support/ErrorHandling.h" >>> @@ -620,3 +621,17 @@ >>> } >>> llvm_unreachable("Unexpected declaration name kind"); >>> } >>> + >>> +const DiagnosticBuilder &clang::operator<<(const DiagnosticBuilder &DB, >>> + DeclarationName N) { >>> + DB.AddTaggedVal(N.getAsOpaqueInteger(), >>> + DiagnosticsEngine::ak_declarationname); >>> + return DB; >>> +} >>> + >>> +const PartialDiagnostic &clang::operator<<(const PartialDiagnostic &PD, >>> + DeclarationName N) { >>> + PD.AddTaggedVal(N.getAsOpaqueInteger(), >>> + DiagnosticsEngine::ak_declarationname); >>> + return PD; >>> +} >>> >>> Modified: cfe/trunk/lib/AST/ExprConstant.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprConstant.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/AST/ExprConstant.cpp (original) >>> +++ cfe/trunk/lib/AST/ExprConstant.cpp Sat Feb 4 06:31:12 2012 >>> @@ -42,6 +42,7 @@ >>> #include "clang/AST/ASTDiagnostic.h" >>> #include "clang/AST/Expr.h" >>> #include "clang/Basic/Builtins.h" >>> +#include "clang/Basic/PartialDiagnostic.h" >>> #include "clang/Basic/TargetInfo.h" >>> #include "llvm/ADT/SmallString.h" >>> #include <cstring> >>> >>> Modified: cfe/trunk/lib/AST/ItaniumMangle.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ItaniumMangle.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/AST/ItaniumMangle.cpp (original) >>> +++ cfe/trunk/lib/AST/ItaniumMangle.cpp Sat Feb 4 06:31:12 2012 >>> @@ -24,6 +24,7 @@ >>> #include "clang/AST/ExprObjC.h" >>> #include "clang/AST/TypeLoc.h" >>> #include "clang/Basic/ABI.h" >>> +#include "clang/Basic/Diagnostic.h" >>> #include "clang/Basic/SourceManager.h" >>> #include "clang/Basic/TargetInfo.h" >>> #include "llvm/ADT/StringExtras.h" >>> >>> Modified: cfe/trunk/lib/AST/NestedNameSpecifier.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/NestedNameSpecifier.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/AST/NestedNameSpecifier.cpp (original) >>> +++ cfe/trunk/lib/AST/NestedNameSpecifier.cpp Sat Feb 4 06:31:12 2012 >>> @@ -18,6 +18,7 @@ >>> #include "clang/AST/PrettyPrinter.h" >>> #include "clang/AST/Type.h" >>> #include "clang/AST/TypeLoc.h" >>> +#include "clang/Basic/Diagnostic.h" >>> #include "llvm/Support/raw_ostream.h" >>> #include <cassert> >>> >>> @@ -639,3 +640,9 @@ >>> return NestedNameSpecifierLoc(Representation, Mem); >>> } >>> >>> +const DiagnosticBuilder &clang::operator<<(const DiagnosticBuilder &DB, >>> + NestedNameSpecifier *NNS) { >>> + DB.AddTaggedVal(reinterpret_cast<intptr_t>(NNS), >>> + DiagnosticsEngine::ak_nestednamespec); >>> + return DB; >>> +} >>> >>> Modified: cfe/trunk/lib/AST/Type.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Type.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/AST/Type.cpp (original) >>> +++ cfe/trunk/lib/AST/Type.cpp Sat Feb 4 06:31:12 2012 >>> @@ -20,6 +20,7 @@ >>> #include "clang/AST/Expr.h" >>> #include "clang/AST/PrettyPrinter.h" >>> #include "clang/AST/TypeVisitor.h" >>> +#include "clang/Basic/PartialDiagnostic.h" >>> #include "clang/Basic/Specifiers.h" >>> #include "llvm/ADT/APSInt.h" >>> #include "llvm/ADT/StringExtras.h" >>> @@ -2309,3 +2310,17 @@ >>> >>> return true; >>> } >>> + >>> +const DiagnosticBuilder &clang::operator<<(const DiagnosticBuilder &DB, >>> + QualType T) { >>> + DB.AddTaggedVal(reinterpret_cast<intptr_t>(T.getAsOpaquePtr()), >>> + DiagnosticsEngine::ak_qualtype); >>> + return DB; >>> +} >>> + >>> +const PartialDiagnostic &clang::operator<<(const PartialDiagnostic &PD, >>> + QualType T) { >>> + PD.AddTaggedVal(reinterpret_cast<intptr_t>(T.getAsOpaquePtr()), >>> + DiagnosticsEngine::ak_qualtype); >>> + return PD; >>> +} >>> >>> Modified: cfe/trunk/lib/CodeGen/CGCXXABI.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCXXABI.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/CodeGen/CGCXXABI.cpp (original) >>> +++ cfe/trunk/lib/CodeGen/CGCXXABI.cpp Sat Feb 4 06:31:12 2012 >>> @@ -13,6 +13,7 @@ >>> //===----------------------------------------------------------------------===// >>> >>> #include "CGCXXABI.h" >>> +#include "clang/Basic/Diagnostic.h" >>> >>> using namespace clang; >>> using namespace CodeGen; >>> >>> Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) >>> +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Sat Feb 4 06:31:12 2012 >>> @@ -21,8 +21,9 @@ >>> #include "clang/AST/DeclTemplate.h" >>> #include "clang/AST/Expr.h" >>> #include "clang/AST/RecordLayout.h" >>> -#include "clang/Basic/SourceManager.h" >>> +#include "clang/Basic/Diagnostic.h" >>> #include "clang/Basic/FileManager.h" >>> +#include "clang/Basic/SourceManager.h" >>> #include "clang/Basic/Version.h" >>> #include "clang/Frontend/CodeGenOptions.h" >>> #include "llvm/Constants.h" >>> >>> Modified: cfe/trunk/lib/CodeGen/CodeGenTBAA.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenTBAA.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/CodeGen/CodeGenTBAA.cpp (original) >>> +++ cfe/trunk/lib/CodeGen/CodeGenTBAA.cpp Sat Feb 4 06:31:12 2012 >>> @@ -22,6 +22,7 @@ >>> #include "llvm/Metadata.h" >>> #include "llvm/Constants.h" >>> #include "llvm/Type.h" >>> +#include "llvm/ADT/STLExtras.h" >>> using namespace clang; >>> using namespace CodeGen; >>> >>> >>> Modified: cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp (original) >>> +++ cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp Sat Feb 4 06:31:12 2012 >>> @@ -16,6 +16,7 @@ >>> #include "clang/Sema/AnalysisBasedWarnings.h" >>> #include "clang/Sema/SemaInternal.h" >>> #include "clang/Sema/ScopeInfo.h" >>> +#include "clang/Basic/PartialDiagnostic.h" >>> #include "clang/Basic/SourceManager.h" >>> #include "clang/Basic/SourceLocation.h" >>> #include "clang/Lex/Preprocessor.h" >>> >>> Modified: cfe/trunk/lib/Serialization/ASTWriter.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriter.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/Serialization/ASTWriter.cpp (original) >>> +++ cfe/trunk/lib/Serialization/ASTWriter.cpp Sat Feb 4 06:31:12 2012 >>> @@ -29,6 +29,7 @@ >>> #include "clang/Lex/PreprocessingRecord.h" >>> #include "clang/Lex/Preprocessor.h" >>> #include "clang/Lex/HeaderSearch.h" >>> +#include "clang/Basic/Diagnostic.h" >>> #include "clang/Basic/FileManager.h" >>> #include "clang/Basic/FileSystemStatCache.h" >>> #include "clang/Basic/OnDiskHashTable.h" >>> >>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp (original) >>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp Sat Feb >>> 4 06:31:12 2012 >>> @@ -19,6 +19,7 @@ >>> #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" >>> #include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h" >>> #include "clang/AST/CharUnits.h" >>> +#include "llvm/ADT/STLExtras.h" >>> >>> using namespace clang; >>> using namespace ento; >>> >>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/AttrNonNullChecker.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/AttrNonNullChecker.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/AttrNonNullChecker.cpp (original) >>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/AttrNonNullChecker.cpp Sat Feb 4 >>> 06:31:12 2012 >>> @@ -17,6 +17,7 @@ >>> #include "clang/StaticAnalyzer/Core/CheckerManager.h" >>> #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" >>> #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" >>> +#include "llvm/ADT/STLExtras.h" >>> >>> using namespace clang; >>> using namespace ento; >>> >>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp (original) >>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp Sat Feb 4 >>> 06:31:12 2012 >>> @@ -18,6 +18,7 @@ >>> #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" >>> #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" >>> #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h" >>> +#include "llvm/ADT/STLExtras.h" >>> #include "llvm/ADT/StringSwitch.h" >>> >>> using namespace clang; >>> >>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/DivZeroChecker.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/DivZeroChecker.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/DivZeroChecker.cpp (original) >>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/DivZeroChecker.cpp Sat Feb 4 >>> 06:31:12 2012 >>> @@ -17,6 +17,7 @@ >>> #include "clang/StaticAnalyzer/Core/CheckerManager.h" >>> #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" >>> #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" >>> +#include "llvm/ADT/STLExtras.h" >>> >>> using namespace clang; >>> using namespace ento; >>> >>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp (original) >>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp Sat Feb 4 >>> 06:31:12 2012 >>> @@ -21,6 +21,7 @@ >>> #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h" >>> #include "clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h" >>> #include "llvm/ADT/ImmutableMap.h" >>> +#include "llvm/ADT/STLExtras.h" >>> using namespace clang; >>> using namespace ento; >>> >>> >>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCAtSyncChecker.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCAtSyncChecker.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCAtSyncChecker.cpp (original) >>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/ObjCAtSyncChecker.cpp Sat Feb 4 >>> 06:31:12 2012 >>> @@ -20,6 +20,7 @@ >>> #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" >>> #include "clang/StaticAnalyzer/Checkers/DereferenceChecker.h" >>> #include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h" >>> +#include "llvm/ADT/STLExtras.h" >>> >>> using namespace clang; >>> using namespace ento; >>> >>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp (original) >>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp Sat Feb 4 >>> 06:31:12 2012 >>> @@ -19,6 +19,7 @@ >>> #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" >>> #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h" >>> #include "llvm/ADT/ImmutableList.h" >>> +#include "llvm/ADT/STLExtras.h" >>> >>> using namespace clang; >>> using namespace ento; >>> >>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/StreamChecker.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/StreamChecker.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/StreamChecker.cpp (original) >>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/StreamChecker.cpp Sat Feb 4 >>> 06:31:12 2012 >>> @@ -20,6 +20,7 @@ >>> #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h" >>> #include "clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h" >>> #include "llvm/ADT/ImmutableMap.h" >>> +#include "llvm/ADT/STLExtras.h" >>> >>> using namespace clang; >>> using namespace ento; >>> >>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/UnixAPIChecker.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/UnixAPIChecker.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/UnixAPIChecker.cpp (original) >>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/UnixAPIChecker.cpp Sat Feb 4 >>> 06:31:12 2012 >>> @@ -19,6 +19,7 @@ >>> #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" >>> #include "clang/Basic/TargetInfo.h" >>> #include "llvm/ADT/Optional.h" >>> +#include "llvm/ADT/STLExtras.h" >>> #include "llvm/ADT/StringSwitch.h" >>> #include <fcntl.h> >>> >>> >>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/VLASizeChecker.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/VLASizeChecker.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/VLASizeChecker.cpp (original) >>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/VLASizeChecker.cpp Sat Feb 4 >>> 06:31:12 2012 >>> @@ -20,6 +20,7 @@ >>> #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" >>> #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" >>> #include "clang/AST/CharUnits.h" >>> +#include "llvm/ADT/STLExtras.h" >>> >>> using namespace clang; >>> using namespace ento; >>> >>> Modified: cfe/trunk/lib/StaticAnalyzer/Core/AnalysisManager.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/AnalysisManager.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/StaticAnalyzer/Core/AnalysisManager.cpp (original) >>> +++ cfe/trunk/lib/StaticAnalyzer/Core/AnalysisManager.cpp Sat Feb 4 >>> 06:31:12 2012 >>> @@ -10,6 +10,7 @@ >>> #include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h" >>> #include "clang/Index/Entity.h" >>> #include "clang/Index/Indexer.h" >>> +#include "llvm/ADT/STLExtras.h" >>> >>> using namespace clang; >>> using namespace ento; >>> >>> Modified: cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp (original) >>> +++ cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp Sat Feb 4 06:31:12 >>> 2012 >>> @@ -21,6 +21,7 @@ >>> #include "clang/AST/Expr.h" >>> #include "clang/AST/ParentMap.h" >>> #include "clang/AST/StmtObjC.h" >>> +#include "clang/Basic/Diagnostic.h" >>> #include "clang/Basic/SourceManager.h" >>> #include "clang/Analysis/ProgramPoint.h" >>> #include "clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h" >>> >>> Modified: cfe/trunk/lib/StaticAnalyzer/Core/CheckerRegistry.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/CheckerRegistry.cpp?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/StaticAnalyzer/Core/CheckerRegistry.cpp (original) >>> +++ cfe/trunk/lib/StaticAnalyzer/Core/CheckerRegistry.cpp Sat Feb 4 >>> 06:31:12 2012 >>> @@ -10,6 +10,7 @@ >>> #include "clang/StaticAnalyzer/Core/CheckerRegistry.h" >>> #include "clang/StaticAnalyzer/Core/CheckerOptInfo.h" >>> #include "llvm/ADT/SetVector.h" >>> +#include "llvm/ADT/STLExtras.h" >>> >>> using namespace clang; >>> using namespace ento; >>> >>> Modified: cfe/trunk/tools/libclang/IndexingContext.h >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/IndexingContext.h?rev=149781&r1=149780&r2=149781&view=diff >>> ============================================================================== >>> --- cfe/trunk/tools/libclang/IndexingContext.h (original) >>> +++ cfe/trunk/tools/libclang/IndexingContext.h Sat Feb 4 06:31:12 2012 >>> @@ -13,12 +13,14 @@ >>> #include "clang/AST/DeclObjC.h" >>> #include "clang/AST/DeclGroup.h" >>> #include "llvm/ADT/DenseSet.h" >>> +#include "llvm/ADT/IntrusiveRefCntPtr.h" >>> >>> namespace clang { >>> class FileEntry; >>> class ObjCPropertyDecl; >>> class ClassTemplateDecl; >>> class FunctionTemplateDecl; >>> + class Preprocessor; >>> class TypeAliasTemplateDecl; >>> >>> namespace cxindex { >>> >>> >>> _______________________________________________ >>> cfe-commits mailing list >>> [email protected] >>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >> > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
