[cfe-commits] r146959 - in /cfe/trunk: include/clang/AST/ include/clang/Analysis/Analyses/ include/clang/Basic/ include/clang/CodeGen/ include/clang/Driver/ include/clang/Frontend/ include/clang/Lex/ include/clang/Sema/ include/clang/StaticAnalyzer/Core/ include/clang/StaticAnalyzer/Core/BugReporter/ include/clang/StaticAnalyzer/Core/PathSensitive/ lib/AST/ lib/Analysis/ lib/Basic/ lib/CodeGen/ lib/Driver/ lib/Frontend/ lib/Lex/ lib/Parse/ lib/Sema/ lib/StaticAnalyzer/Core/ utils/TableGen/
Chad Rosier
mcrosier at apple.com
Mon Dec 19 23:48:37 PST 2011
David,
I believe CMakeList.txt needs an update here as well.
Chad
On Dec 19, 2011, at 6:48 PM, David Blaikie wrote:
> Author: dblaikie
> Date: Mon Dec 19 20:48:34 2011
> New Revision: 146959
>
> URL: http://llvm.org/viewvc/llvm-project?rev=146959&view=rev
> Log:
> Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
>
> Added:
> cfe/trunk/lib/Analysis/Dominators.cpp
> cfe/trunk/lib/Frontend/ChainedDiagnosticConsumer.cpp
> cfe/trunk/lib/Lex/PPCallbacks.cpp
> cfe/trunk/lib/Sema/SemaConsumer.cpp
> cfe/trunk/lib/StaticAnalyzer/Core/SubEngine.cpp
> Modified:
> cfe/trunk/include/clang/AST/Attr.h
> cfe/trunk/include/clang/AST/Decl.h
> cfe/trunk/include/clang/AST/DeclCXX.h
> cfe/trunk/include/clang/AST/DeclFriend.h
> cfe/trunk/include/clang/AST/DeclObjC.h
> cfe/trunk/include/clang/AST/DeclTemplate.h
> cfe/trunk/include/clang/AST/ExprCXX.h
> cfe/trunk/include/clang/AST/Mangle.h
> cfe/trunk/include/clang/Analysis/Analyses/Dominators.h
> cfe/trunk/include/clang/Analysis/Analyses/LiveVariables.h
> cfe/trunk/include/clang/Analysis/Analyses/PostOrderCFGView.h
> cfe/trunk/include/clang/Analysis/Analyses/ReachableCode.h
> cfe/trunk/include/clang/Basic/Diagnostic.h
> cfe/trunk/include/clang/Basic/FileSystemStatCache.h
> cfe/trunk/include/clang/CodeGen/CodeGenAction.h
> cfe/trunk/include/clang/CodeGen/ModuleBuilder.h
> cfe/trunk/include/clang/Driver/Action.h
> cfe/trunk/include/clang/Driver/Job.h
> cfe/trunk/include/clang/Frontend/ChainedDiagnosticConsumer.h
> cfe/trunk/include/clang/Frontend/FrontendAction.h
> cfe/trunk/include/clang/Lex/Lexer.h
> cfe/trunk/include/clang/Lex/PPCallbacks.h
> cfe/trunk/include/clang/Lex/PreprocessorLexer.h
> cfe/trunk/include/clang/Sema/SemaConsumer.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/Checker.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
> cfe/trunk/lib/AST/AttrImpl.cpp
> cfe/trunk/lib/AST/Decl.cpp
> cfe/trunk/lib/AST/DeclCXX.cpp
> cfe/trunk/lib/AST/DeclFriend.cpp
> cfe/trunk/lib/AST/DeclObjC.cpp
> cfe/trunk/lib/AST/DeclTemplate.cpp
> cfe/trunk/lib/AST/ExprCXX.cpp
> cfe/trunk/lib/AST/Mangle.cpp
> cfe/trunk/lib/Analysis/LiveVariables.cpp
> cfe/trunk/lib/Analysis/PostOrderCFGView.cpp
> cfe/trunk/lib/Analysis/ReachableCode.cpp
> cfe/trunk/lib/Basic/Diagnostic.cpp
> cfe/trunk/lib/Basic/FileSystemStatCache.cpp
> cfe/trunk/lib/CodeGen/CodeGenAction.cpp
> cfe/trunk/lib/CodeGen/ModuleBuilder.cpp
> cfe/trunk/lib/Driver/Action.cpp
> cfe/trunk/lib/Driver/Job.cpp
> cfe/trunk/lib/Driver/ToolChains.cpp
> cfe/trunk/lib/Driver/ToolChains.h
> cfe/trunk/lib/Driver/Tools.cpp
> cfe/trunk/lib/Driver/Tools.h
> cfe/trunk/lib/Frontend/FrontendAction.cpp
> cfe/trunk/lib/Lex/Lexer.cpp
> cfe/trunk/lib/Lex/PreprocessorLexer.cpp
> cfe/trunk/lib/Parse/ParseObjc.cpp
> cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp
> cfe/trunk/lib/StaticAnalyzer/Core/AnalysisManager.cpp
> cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
> cfe/trunk/lib/StaticAnalyzer/Core/Checker.cpp
> cfe/trunk/lib/StaticAnalyzer/Core/CoreEngine.cpp
> cfe/trunk/lib/StaticAnalyzer/Core/ExplodedGraph.cpp
> cfe/trunk/lib/StaticAnalyzer/Core/MemRegion.cpp
> cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp
> cfe/trunk/lib/StaticAnalyzer/Core/ProgramState.cpp
> cfe/trunk/lib/StaticAnalyzer/Core/SValBuilder.cpp
> cfe/trunk/lib/StaticAnalyzer/Core/Store.cpp
> cfe/trunk/lib/StaticAnalyzer/Core/SymbolManager.cpp
> cfe/trunk/utils/TableGen/TableGen.cpp
>
> Modified: cfe/trunk/include/clang/AST/Attr.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Attr.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/Attr.h (original)
> +++ cfe/trunk/include/clang/AST/Attr.h Mon Dec 19 20:48:34 2011
> @@ -112,6 +112,7 @@
> };
>
> class InheritableAttr : public Attr {
> + virtual void anchor();
> protected:
> InheritableAttr(attr::Kind AK, SourceRange R)
> : Attr(AK, R) {}
> @@ -127,6 +128,7 @@
> };
>
> class InheritableParamAttr : public InheritableAttr {
> + virtual void anchor();
> protected:
> InheritableParamAttr(attr::Kind AK, SourceRange R)
> : InheritableAttr(AK, R) {}
>
> Modified: cfe/trunk/include/clang/AST/Decl.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Decl.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/Decl.h (original)
> +++ cfe/trunk/include/clang/AST/Decl.h Mon Dec 19 20:48:34 2011
> @@ -67,6 +67,7 @@
>
> /// TranslationUnitDecl - The top declaration context.
> class TranslationUnitDecl : public Decl, public DeclContext {
> + virtual void anchor();
> ASTContext &Ctx;
>
> /// The (most recently entered) anonymous namespace for this
> @@ -99,6 +100,7 @@
> /// NamedDecl - This represents a decl with a name. Many decls have names such
> /// as ObjCMethodDecl, but not @class, etc.
> class NamedDecl : public Decl {
> + virtual void anchor();
> /// Name - The name of this declaration, which is typically a normal
> /// identifier but may also be a special kind of name (C++
> /// constructor, Objective-C selector, etc.)
> @@ -320,6 +322,7 @@
> /// location of the statement. For GNU local labels (__label__), the decl
> /// location is where the __label__ is.
> class LabelDecl : public NamedDecl {
> + virtual void anchor();
> LabelStmt *TheStmt;
> /// LocStart - For normal labels, this is the same as the main declaration
> /// label, i.e., the location of the identifier; for GNU local labels,
> @@ -355,6 +358,7 @@
>
> /// NamespaceDecl - Represent a C++ namespace.
> class NamespaceDecl : public NamedDecl, public DeclContext {
> + virtual void anchor();
> bool IsInline : 1;
>
> /// LocStart - The starting location of the source range, pointing
> @@ -498,6 +502,7 @@
> /// an lvalue) a function (in which case it is a function designator) or
> /// an enum constant.
> class ValueDecl : public NamedDecl {
> + virtual void anchor();
> QualType DeclType;
>
> protected:
> @@ -1137,6 +1142,7 @@
> };
>
> class ImplicitParamDecl : public VarDecl {
> + virtual void anchor();
> public:
> static ImplicitParamDecl *Create(ASTContext &C, DeclContext *DC,
> SourceLocation IdLoc, IdentifierInfo *Id,
> @@ -2140,6 +2146,7 @@
> /// field injected from an anonymous union/struct into the parent scope.
> /// IndirectFieldDecl are always implicit.
> class IndirectFieldDecl : public ValueDecl {
> + virtual void anchor();
> NamedDecl **Chaining;
> unsigned ChainingSize;
>
> @@ -2179,6 +2186,7 @@
> /// TypeDecl - Represents a declaration of a type.
> ///
> class TypeDecl : public NamedDecl {
> + virtual void anchor();
> /// TypeForDecl - This indicates the Type object that represents
> /// this TypeDecl. It is a cache maintained by
> /// ASTContext::getTypedefType, ASTContext::getTagDeclType, and
> @@ -2220,6 +2228,7 @@
>
> /// Base class for declarations which introduce a typedef-name.
> class TypedefNameDecl : public TypeDecl, public Redeclarable<TypedefNameDecl> {
> + virtual void anchor();
> /// UnderlyingType - This is the type the typedef is set to.
> TypeSourceInfo *TInfo;
>
> @@ -2547,6 +2556,7 @@
> /// EnumDecl - Represents an enum. As an extension, we allow forward-declared
> /// enums.
> class EnumDecl : public TagDecl {
> + virtual void anchor();
> /// IntegerType - This represent the integer type that the enum corresponds
> /// to for code generation purposes. Note that the enumerator constants may
> /// have a different type than this does.
> @@ -2866,6 +2876,7 @@
> };
>
> class FileScopeAsmDecl : public Decl {
> + virtual void anchor();
> StringLiteral *AsmString;
> SourceLocation RParenLoc;
> FileScopeAsmDecl(DeclContext *DC, StringLiteral *asmstring,
>
> Modified: cfe/trunk/include/clang/AST/DeclCXX.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclCXX.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/DeclCXX.h (original)
> +++ cfe/trunk/include/clang/AST/DeclCXX.h Mon Dec 19 20:48:34 2011
> @@ -104,6 +104,7 @@
> /// Also note that this class has nothing to do with so-called
> /// "access declarations" (C++98 11.3 [class.access.dcl]).
> class AccessSpecDecl : public Decl {
> + virtual void anchor();
> /// ColonLoc - The location of the ':'.
> SourceLocation ColonLoc;
>
> @@ -1316,6 +1317,7 @@
> /// CXXMethodDecl - Represents a static or instance method of a
> /// struct/union/class.
> class CXXMethodDecl : public FunctionDecl {
> + virtual void anchor();
> protected:
> CXXMethodDecl(Kind DK, CXXRecordDecl *RD, SourceLocation StartLoc,
> const DeclarationNameInfo &NameInfo,
> @@ -1325,9 +1327,9 @@
> : FunctionDecl(DK, RD, StartLoc, NameInfo, T, TInfo,
> (isStatic ? SC_Static : SC_None),
> SCAsWritten, isInline, isConstexpr) {
> - if (EndLocation.isValid())
> - setRangeEnd(EndLocation);
> - }
> + if (EndLocation.isValid())
> + setRangeEnd(EndLocation);
> + }
>
> public:
> static CXXMethodDecl *Create(ASTContext &C, CXXRecordDecl *RD,
> @@ -1690,6 +1692,7 @@
> /// };
> /// @endcode
> class CXXConstructorDecl : public CXXMethodDecl {
> + virtual void anchor();
> /// IsExplicitSpecified - Whether this constructor declaration has the
> /// 'explicit' keyword specified.
> bool IsExplicitSpecified : 1;
> @@ -1918,6 +1921,7 @@
> /// };
> /// @endcode
> class CXXDestructorDecl : public CXXMethodDecl {
> + virtual void anchor();
> /// ImplicitlyDefined - Whether this destructor was implicitly
> /// defined by the compiler. When false, the destructor was defined
> /// by the user. In C++03, this flag will have the same value as
> @@ -1989,6 +1993,7 @@
> /// };
> /// @endcode
> class CXXConversionDecl : public CXXMethodDecl {
> + virtual void anchor();
> /// IsExplicitSpecified - Whether this conversion function declaration is
> /// marked "explicit", meaning that it can only be applied when the user
> /// explicitly wrote a cast. This is a C++0x feature.
> @@ -2045,6 +2050,7 @@
> /// extern "C" void foo();
> ///
> class LinkageSpecDecl : public Decl, public DeclContext {
> + virtual void anchor();
> public:
> /// LanguageIDs - Used to represent the language in a linkage
> /// specification. The values are part of the serialization abi for
> @@ -2117,9 +2123,10 @@
> /// using namespace std;
> ///
> // NB: UsingDirectiveDecl should be Decl not NamedDecl, but we provide
> -// artificial name, for all using-directives in order to store
> +// artificial names for all using-directives in order to store
> // them in DeclContext effectively.
> class UsingDirectiveDecl : public NamedDecl {
> + virtual void anchor();
> /// \brief The location of the "using" keyword.
> SourceLocation UsingLoc;
>
> @@ -2219,6 +2226,8 @@
> /// namespace Foo = Bar;
> /// @endcode
> class NamespaceAliasDecl : public NamedDecl {
> + virtual void anchor();
> +
> /// \brief The location of the "namespace" keyword.
> SourceLocation NamespaceLoc;
>
> @@ -2308,6 +2317,8 @@
> /// }
> ///
> class UsingShadowDecl : public NamedDecl {
> + virtual void anchor();
> +
> /// The referenced declaration.
> NamedDecl *Underlying;
>
> @@ -2367,6 +2378,8 @@
> /// UsingDecl - Represents a C++ using-declaration. For example:
> /// using someNameSpace::someIdentifier;
> class UsingDecl : public NamedDecl {
> + virtual void anchor();
> +
> /// \brief The source location of the "using" location itself.
> SourceLocation UsingLocation;
>
> @@ -2497,6 +2510,8 @@
> /// using Base<T>::foo;
> /// };
> class UnresolvedUsingValueDecl : public ValueDecl {
> + virtual void anchor();
> +
> /// \brief The source location of the 'using' keyword
> SourceLocation UsingLocation;
>
> @@ -2564,6 +2579,8 @@
> /// The type associated with a unresolved using typename decl is
> /// currently always a typename type.
> class UnresolvedUsingTypenameDecl : public TypeDecl {
> + virtual void anchor();
> +
> /// \brief The source location of the 'using' keyword
> SourceLocation UsingLocation;
>
> @@ -2612,6 +2629,7 @@
>
> /// StaticAssertDecl - Represents a C++0x static_assert declaration.
> class StaticAssertDecl : public Decl {
> + virtual void anchor();
> Expr *AssertExpr;
> StringLiteral *Message;
> SourceLocation RParenLoc;
>
> Modified: cfe/trunk/include/clang/AST/DeclFriend.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclFriend.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/DeclFriend.h (original)
> +++ cfe/trunk/include/clang/AST/DeclFriend.h Mon Dec 19 20:48:34 2011
> @@ -35,6 +35,7 @@
> ///
> /// The semantic context of a friend decl is its declaring class.
> class FriendDecl : public Decl {
> + virtual void anchor();
> public:
> typedef llvm::PointerUnion<NamedDecl*,TypeSourceInfo*> FriendUnion;
>
>
> Modified: cfe/trunk/include/clang/AST/DeclObjC.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclObjC.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/DeclObjC.h (original)
> +++ cfe/trunk/include/clang/AST/DeclObjC.h Mon Dec 19 20:48:34 2011
> @@ -426,6 +426,8 @@
> /// ObjCProtocolDecl, and ObjCImplDecl.
> ///
> class ObjCContainerDecl : public NamedDecl, public DeclContext {
> + virtual void anchor();
> +
> SourceLocation AtStart;
>
> // These two locations in the range mark the end of the method container.
> @@ -542,6 +544,8 @@
> ///
> class ObjCInterfaceDecl : public ObjCContainerDecl
> , public Redeclarable<ObjCInterfaceDecl> {
> + virtual void anchor();
> +
> /// TypeForDecl - This indicates the Type object that represents this
> /// TypeDecl. It is a cache maintained by ASTContext::getObjCInterfaceType
> mutable const Type *TypeForDecl;
> @@ -949,6 +953,8 @@
> /// }
> ///
> class ObjCIvarDecl : public FieldDecl {
> + virtual void anchor();
> +
> public:
> enum AccessControl {
> None, Private, Protected, Public, Package
> @@ -1010,7 +1016,7 @@
> /// ObjCAtDefsFieldDecl - Represents a field declaration created by an
> /// @defs(...).
> class ObjCAtDefsFieldDecl : public FieldDecl {
> -private:
> + virtual void anchor();
> ObjCAtDefsFieldDecl(DeclContext *DC, SourceLocation StartLoc,
> SourceLocation IdLoc, IdentifierInfo *Id,
> QualType T, Expr *BW)
> @@ -1055,6 +1061,8 @@
> /// id <NSDraggingInfo> anyObjectThatImplementsNSDraggingInfo;
> ///
> class ObjCProtocolDecl : public ObjCContainerDecl {
> + virtual void anchor();
> +
> /// Referenced protocols
> ObjCProtocolList ReferencedProtocols;
>
> @@ -1173,6 +1181,8 @@
> /// @protocol NSTextInput, NSChangeSpelling, NSDraggingInfo;
> ///
> class ObjCForwardProtocolDecl : public Decl {
> + virtual void anchor();
> +
> ObjCProtocolList ReferencedProtocols;
>
> ObjCForwardProtocolDecl(DeclContext *DC, SourceLocation L,
> @@ -1232,6 +1242,8 @@
> /// don't support this level of dynamism, which is both powerful and dangerous.
> ///
> class ObjCCategoryDecl : public ObjCContainerDecl {
> + virtual void anchor();
> +
> /// Interface belonging to this category
> ObjCInterfaceDecl *ClassInterface;
>
> @@ -1328,6 +1340,8 @@
> };
>
> class ObjCImplDecl : public ObjCContainerDecl {
> + virtual void anchor();
> +
> /// Class interface for this class/category implementation
> ObjCInterfaceDecl *ClassInterface;
>
> @@ -1391,6 +1405,8 @@
> ///
> /// ObjCCategoryImplDecl
> class ObjCCategoryImplDecl : public ObjCImplDecl {
> + virtual void anchor();
> +
> // Category name
> IdentifierInfo *Id;
>
> @@ -1479,6 +1495,7 @@
> /// specified, they need to be *identical* to the interface.
> ///
> class ObjCImplementationDecl : public ObjCImplDecl {
> + virtual void anchor();
> /// Implementation Class's super class.
> ObjCInterfaceDecl *SuperClass;
> /// Support for ivar initialization.
> @@ -1609,6 +1626,7 @@
> /// ObjCCompatibleAliasDecl - Represents alias of a class. This alias is
> /// declared as @compatibility_alias alias class.
> class ObjCCompatibleAliasDecl : public NamedDecl {
> + virtual void anchor();
> /// Class that this is an alias of.
> ObjCInterfaceDecl *AliasedClass;
>
> @@ -1635,6 +1653,7 @@
> /// @property (assign, readwrite) int MyProperty;
> ///
> class ObjCPropertyDecl : public NamedDecl {
> + virtual void anchor();
> public:
> enum PropertyAttributeKind {
> OBJC_PR_noattr = 0x00,
>
> Modified: cfe/trunk/include/clang/AST/DeclTemplate.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclTemplate.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/DeclTemplate.h (original)
> +++ cfe/trunk/include/clang/AST/DeclTemplate.h Mon Dec 19 20:48:34 2011
> @@ -198,6 +198,7 @@
> /// parameters and a reference to the templated scoped declaration: the
> /// underlying AST node.
> class TemplateDecl : public NamedDecl {
> + virtual void anchor();
> protected:
> // This is probably never used.
> TemplateDecl(Kind DK, DeclContext *DC, SourceLocation L,
> @@ -1201,6 +1202,7 @@
> /// name of a template and the template parameters allowable for substitution.
> class TemplateTemplateParmDecl
> : public TemplateDecl, protected TemplateParmPosition {
> + virtual void anchor();
>
> /// DefaultArgument - The default template argument, if any.
> TemplateArgumentLoc DefaultArgument;
> @@ -1561,6 +1563,8 @@
>
> class ClassTemplatePartialSpecializationDecl
> : public ClassTemplateSpecializationDecl {
> + virtual void anchor();
> +
> /// \brief The list of template parameters
> TemplateParameterList* TemplateParams;
>
> @@ -1941,6 +1945,7 @@
> /// NOTE: This class is not currently in use. All of the above
> /// will yield a FriendDecl, not a FriendTemplateDecl.
> class FriendTemplateDecl : public Decl {
> + virtual void anchor();
> public:
> typedef llvm::PointerUnion<NamedDecl*,TypeSourceInfo*> FriendUnion;
>
> @@ -2107,7 +2112,8 @@
> /// CXXMethodDecl. Then during an instantiation of class A, it will be
> /// transformed into an actual function specialization.
> class ClassScopeFunctionSpecializationDecl : public Decl {
> -private:
> + virtual void anchor();
> +
> ClassScopeFunctionSpecializationDecl(DeclContext *DC, SourceLocation Loc,
> CXXMethodDecl *FD)
> : Decl(Decl::ClassScopeFunctionSpecialization, DC, Loc),
>
> Modified: cfe/trunk/include/clang/AST/ExprCXX.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ExprCXX.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/ExprCXX.h (original)
> +++ cfe/trunk/include/clang/AST/ExprCXX.h Mon Dec 19 20:48:34 2011
> @@ -1643,6 +1643,8 @@
> /// __array_rank(int[10][20]) == 2
> /// __array_extent(int, 1) == 20
> class ArrayTypeTraitExpr : public Expr {
> + virtual void anchor();
> +
> /// ATT - The trait. An ArrayTypeTrait enum in MSVC compat unsigned.
> unsigned ATT : 2;
>
>
> Modified: cfe/trunk/include/clang/AST/Mangle.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Mangle.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/Mangle.h (original)
> +++ cfe/trunk/include/clang/AST/Mangle.h Mon Dec 19 20:48:34 2011
> @@ -64,6 +64,8 @@
> /// MangleContext - Context for tracking state which persists across multiple
> /// calls to the C++ name mangler.
> class MangleContext {
> + virtual void anchor();
> +
> ASTContext &Context;
> DiagnosticsEngine &Diags;
>
>
> Modified: cfe/trunk/include/clang/Analysis/Analyses/Dominators.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Analysis/Analyses/Dominators.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Analysis/Analyses/Dominators.h (original)
> +++ cfe/trunk/include/clang/Analysis/Analyses/Dominators.h Mon Dec 19 20:48:34 2011
> @@ -31,6 +31,7 @@
> /// This class implements the dominators tree functionality given a Clang CFG.
> ///
> class DominatorTree : public ManagedAnalysis {
> + virtual void anchor();
> public:
> llvm::DominatorTreeBase<CFGBlock>* DT;
>
> @@ -155,7 +156,7 @@
> CFG *cfg;
> };
>
> -void WriteAsOperand(raw_ostream &OS, const CFGBlock *BB,
> +inline void WriteAsOperand(raw_ostream &OS, const CFGBlock *BB,
> bool t) {
> OS << "BB#" << BB->getBlockID();
> }
>
> Modified: cfe/trunk/include/clang/Analysis/Analyses/LiveVariables.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Analysis/Analyses/LiveVariables.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Analysis/Analyses/LiveVariables.h (original)
> +++ cfe/trunk/include/clang/Analysis/Analyses/LiveVariables.h Mon Dec 19 20:48:34 2011
> @@ -52,7 +52,9 @@
> friend class LiveVariables;
> };
>
> - struct Observer {
> + class Observer {
> + virtual void anchor();
> + public:
> virtual ~Observer() {}
>
> /// A callback invoked right before invoking the
>
> Modified: cfe/trunk/include/clang/Analysis/Analyses/PostOrderCFGView.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Analysis/Analyses/PostOrderCFGView.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Analysis/Analyses/PostOrderCFGView.h (original)
> +++ cfe/trunk/include/clang/Analysis/Analyses/PostOrderCFGView.h Mon Dec 19 20:48:34 2011
> @@ -27,6 +27,7 @@
> namespace clang {
>
> class PostOrderCFGView : public ManagedAnalysis {
> + virtual void anchor();
> public:
> /// \brief Implements a set of CFGBlocks using a BitVector.
> ///
>
> Modified: cfe/trunk/include/clang/Analysis/Analyses/ReachableCode.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Analysis/Analyses/ReachableCode.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Analysis/Analyses/ReachableCode.h (original)
> +++ cfe/trunk/include/clang/Analysis/Analyses/ReachableCode.h Mon Dec 19 20:48:34 2011
> @@ -37,6 +37,7 @@
> namespace reachable_code {
>
> class Callback {
> + virtual void anchor();
> public:
> virtual ~Callback() {}
> virtual void HandleUnreachable(SourceLocation L, SourceRange R1,
>
> Modified: cfe/trunk/include/clang/Basic/Diagnostic.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Diagnostic.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Basic/Diagnostic.h (original)
> +++ cfe/trunk/include/clang/Basic/Diagnostic.h Mon Dec 19 20:48:34 2011
> @@ -1118,6 +1118,7 @@
> /// IgnoringDiagConsumer - This is a diagnostic client that just ignores all
> /// diags.
> class IgnoringDiagConsumer : public DiagnosticConsumer {
> + virtual void anchor();
> void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel,
> const Diagnostic &Info) {
> // Just ignore it.
>
> Modified: cfe/trunk/include/clang/Basic/FileSystemStatCache.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/FileSystemStatCache.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Basic/FileSystemStatCache.h (original)
> +++ cfe/trunk/include/clang/Basic/FileSystemStatCache.h Mon Dec 19 20:48:34 2011
> @@ -25,6 +25,7 @@
> /// system calls, which is used by precompiled and pretokenized headers to
> /// improve performance.
> class FileSystemStatCache {
> + virtual void anchor();
> protected:
> llvm::OwningPtr<FileSystemStatCache> NextStatCache;
>
>
> Modified: cfe/trunk/include/clang/CodeGen/CodeGenAction.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/CodeGen/CodeGenAction.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/CodeGen/CodeGenAction.h (original)
> +++ cfe/trunk/include/clang/CodeGen/CodeGenAction.h Mon Dec 19 20:48:34 2011
> @@ -63,31 +63,37 @@
> };
>
> class EmitAssemblyAction : public CodeGenAction {
> + virtual void anchor();
> public:
> EmitAssemblyAction(llvm::LLVMContext *_VMContext = 0);
> };
>
> class EmitBCAction : public CodeGenAction {
> + virtual void anchor();
> public:
> EmitBCAction(llvm::LLVMContext *_VMContext = 0);
> };
>
> class EmitLLVMAction : public CodeGenAction {
> + virtual void anchor();
> public:
> EmitLLVMAction(llvm::LLVMContext *_VMContext = 0);
> };
>
> class EmitLLVMOnlyAction : public CodeGenAction {
> + virtual void anchor();
> public:
> EmitLLVMOnlyAction(llvm::LLVMContext *_VMContext = 0);
> };
>
> class EmitCodeGenOnlyAction : public CodeGenAction {
> + virtual void anchor();
> public:
> EmitCodeGenOnlyAction(llvm::LLVMContext *_VMContext = 0);
> };
>
> class EmitObjAction : public CodeGenAction {
> + virtual void anchor();
> public:
> EmitObjAction(llvm::LLVMContext *_VMContext = 0);
> };
>
> Modified: cfe/trunk/include/clang/CodeGen/ModuleBuilder.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/CodeGen/ModuleBuilder.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/CodeGen/ModuleBuilder.h (original)
> +++ cfe/trunk/include/clang/CodeGen/ModuleBuilder.h Mon Dec 19 20:48:34 2011
> @@ -28,6 +28,7 @@
> class CodeGenOptions;
>
> class CodeGenerator : public ASTConsumer {
> + virtual void anchor();
> public:
> virtual llvm::Module* GetModule() = 0;
> virtual llvm::Module* ReleaseModule() = 0;
>
> Modified: cfe/trunk/include/clang/Driver/Action.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Action.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Driver/Action.h (original)
> +++ cfe/trunk/include/clang/Driver/Action.h Mon Dec 19 20:48:34 2011
> @@ -94,6 +94,7 @@
> };
>
> class InputAction : public Action {
> + virtual void anchor();
> const Arg &Input;
> public:
> InputAction(const Arg &_Input, types::ID _Type);
> @@ -107,6 +108,7 @@
> };
>
> class BindArchAction : public Action {
> + virtual void anchor();
> /// The architecture to bind, or 0 if the default architecture
> /// should be bound.
> const char *ArchName;
> @@ -123,6 +125,7 @@
> };
>
> class JobAction : public Action {
> + virtual void anchor();
> protected:
> JobAction(ActionClass Kind, Action *Input, types::ID Type);
> JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type);
> @@ -136,6 +139,7 @@
> };
>
> class PreprocessJobAction : public JobAction {
> + virtual void anchor();
> public:
> PreprocessJobAction(Action *Input, types::ID OutputType);
>
> @@ -146,6 +150,7 @@
> };
>
> class PrecompileJobAction : public JobAction {
> + virtual void anchor();
> public:
> PrecompileJobAction(Action *Input, types::ID OutputType);
>
> @@ -156,6 +161,7 @@
> };
>
> class AnalyzeJobAction : public JobAction {
> + virtual void anchor();
> public:
> AnalyzeJobAction(Action *Input, types::ID OutputType);
>
> @@ -166,6 +172,7 @@
> };
>
> class CompileJobAction : public JobAction {
> + virtual void anchor();
> public:
> CompileJobAction(Action *Input, types::ID OutputType);
>
> @@ -176,6 +183,7 @@
> };
>
> class AssembleJobAction : public JobAction {
> + virtual void anchor();
> public:
> AssembleJobAction(Action *Input, types::ID OutputType);
>
> @@ -186,6 +194,7 @@
> };
>
> class LinkJobAction : public JobAction {
> + virtual void anchor();
> public:
> LinkJobAction(ActionList &Inputs, types::ID Type);
>
> @@ -196,6 +205,7 @@
> };
>
> class LipoJobAction : public JobAction {
> + virtual void anchor();
> public:
> LipoJobAction(ActionList &Inputs, types::ID Type);
>
> @@ -206,6 +216,7 @@
> };
>
> class DsymutilJobAction : public JobAction {
> + virtual void anchor();
> public:
> DsymutilJobAction(ActionList &Inputs, types::ID Type);
>
> @@ -216,6 +227,7 @@
> };
>
> class VerifyJobAction : public JobAction {
> + virtual void anchor();
> public:
> VerifyJobAction(ActionList &Inputs, types::ID Type);
> static bool classof(const Action *A) {
>
> Modified: cfe/trunk/include/clang/Driver/Job.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Job.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Driver/Job.h (original)
> +++ cfe/trunk/include/clang/Driver/Job.h Mon Dec 19 20:48:34 2011
> @@ -46,6 +46,8 @@
> /// Command - An executable path/name and argument vector to
> /// execute.
> class Command : public Job {
> + virtual void anchor();
> +
> /// Source - The action which caused the creation of this job.
> const Action &Source;
>
>
> Modified: cfe/trunk/include/clang/Frontend/ChainedDiagnosticConsumer.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/ChainedDiagnosticConsumer.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Frontend/ChainedDiagnosticConsumer.h (original)
> +++ cfe/trunk/include/clang/Frontend/ChainedDiagnosticConsumer.h Mon Dec 19 20:48:34 2011
> @@ -21,6 +21,7 @@
> /// should be the "primary" client, and will be used for computing whether the
> /// diagnostics should be included in counts.
> class ChainedDiagnosticConsumer : public DiagnosticConsumer {
> + virtual void anchor();
> llvm::OwningPtr<DiagnosticConsumer> Primary;
> llvm::OwningPtr<DiagnosticConsumer> Secondary;
>
>
> Modified: cfe/trunk/include/clang/Frontend/FrontendAction.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/FrontendAction.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Frontend/FrontendAction.h (original)
> +++ cfe/trunk/include/clang/Frontend/FrontendAction.h Mon Dec 19 20:48:34 2011
> @@ -231,6 +231,7 @@
> };
>
> class PluginASTAction : public ASTFrontendAction {
> + virtual void anchor();
> protected:
> virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
> StringRef InFile) = 0;
>
> Modified: cfe/trunk/include/clang/Lex/Lexer.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/Lexer.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Lex/Lexer.h (original)
> +++ cfe/trunk/include/clang/Lex/Lexer.h Mon Dec 19 20:48:34 2011
> @@ -44,6 +44,8 @@
> /// or buffering/seeking of tokens, only forward lexing is supported. It relies
> /// on the specified Preprocessor object to handle preprocessor directives, etc.
> class Lexer : public PreprocessorLexer {
> + virtual void anchor();
> +
> //===--------------------------------------------------------------------===//
> // Constant configuration values for this lexer.
> const char *BufferStart; // Start of the buffer.
>
> Modified: cfe/trunk/include/clang/Lex/PPCallbacks.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/PPCallbacks.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Lex/PPCallbacks.h (original)
> +++ cfe/trunk/include/clang/Lex/PPCallbacks.h Mon Dec 19 20:48:34 2011
> @@ -224,6 +224,7 @@
>
> /// PPChainedCallbacks - Simple wrapper class for chaining callbacks.
> class PPChainedCallbacks : public PPCallbacks {
> + virtual void anchor();
> PPCallbacks *First, *Second;
>
> public:
>
> Modified: cfe/trunk/include/clang/Lex/PreprocessorLexer.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/PreprocessorLexer.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Lex/PreprocessorLexer.h (original)
> +++ cfe/trunk/include/clang/Lex/PreprocessorLexer.h Mon Dec 19 20:48:34 2011
> @@ -24,6 +24,7 @@
> class Preprocessor;
>
> class PreprocessorLexer {
> + virtual void anchor();
> protected:
> Preprocessor *PP; // Preprocessor object controlling lexing.
>
>
> Modified: cfe/trunk/include/clang/Sema/SemaConsumer.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/SemaConsumer.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Sema/SemaConsumer.h (original)
> +++ cfe/trunk/include/clang/Sema/SemaConsumer.h Mon Dec 19 20:48:34 2011
> @@ -24,6 +24,7 @@
> /// clients that read ASTs and then require further semantic
> /// analysis of the entities in those ASTs.
> class SemaConsumer : public ASTConsumer {
> + virtual void anchor();
> public:
> SemaConsumer() {
> ASTConsumer::SemaConsumer = true;
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h Mon Dec 19 20:48:34 2011
> @@ -52,6 +52,7 @@
> class BugReport {
> public:
> class NodeResolver {
> + virtual void anchor();
> public:
> virtual ~NodeResolver() {}
> virtual const ExplodedNode*
> @@ -374,6 +375,7 @@
> };
>
> class BugReporterContext {
> + virtual void anchor();
> GRBugReporter &BR;
> public:
> BugReporterContext(GRBugReporter& br) : BR(br) {}
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h Mon Dec 19 20:48:34 2011
> @@ -49,6 +49,7 @@
> };
>
> class BuiltinBug : public BugType {
> + virtual void anchor();
> const std::string desc;
> public:
> BuiltinBug(const char *name, const char *description)
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h Mon Dec 19 20:48:34 2011
> @@ -46,6 +46,7 @@
> class PathDiagnostic;
>
> class PathDiagnosticConsumer {
> + virtual void anchor();
> public:
> PathDiagnosticConsumer() {}
>
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/Checker.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/Checker.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/Checker.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/Checker.h Mon Dec 19 20:48:34 2011
> @@ -383,6 +383,7 @@
> check::_VoidCheck, check::_VoidCheck, check::_VoidCheck>
> : public CheckerBase
> {
> + virtual void anchor();
> public:
> static void _register(void *checker, CheckerManager &mgr) { }
> };
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h Mon Dec 19 20:48:34 2011
> @@ -31,6 +31,7 @@
> class CheckerManager;
>
> class AnalysisManager : public BugReporterData {
> + virtual void anchor();
> AnalysisDeclContextManager AnaCtxMgr;
>
> ASTContext &Ctx;
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h Mon Dec 19 20:48:34 2011
> @@ -211,6 +211,7 @@
> /// added to the builder (either as the input node set or as the newly
> /// constructed nodes) but did not have any outgoing transitions added.
> class NodeBuilder {
> + virtual void anchor();
> protected:
> const NodeBuilderContext &C;
>
> @@ -305,6 +306,7 @@
> /// \class NodeBuilderWithSinks
> /// \brief This node builder keeps track of the generated sink nodes.
> class NodeBuilderWithSinks: public NodeBuilder {
> + virtual void anchor();
> protected:
> SmallVector<ExplodedNode*, 2> sinksGenerated;
> ProgramPoint &Location;
> @@ -381,6 +383,7 @@
> /// \brief BranchNodeBuilder is responsible for constructing the nodes
> /// corresponding to the two branches of the if statement - true and false.
> class BranchNodeBuilder: public NodeBuilder {
> + virtual void anchor();
> const CFGBlock *DstT;
> const CFGBlock *DstF;
>
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h Mon Dec 19 20:48:34 2011
> @@ -228,6 +228,7 @@
>
> // FIXME: Is this class necessary?
> class InterExplodedGraphMap {
> + virtual void anchor();
> llvm::DenseMap<const ExplodedNode*, ExplodedNode*> M;
> friend class ExplodedGraph;
>
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h Mon Dec 19 20:48:34 2011
> @@ -177,6 +177,7 @@
> };
>
> class GlobalsSpaceRegion : public MemSpaceRegion {
> + virtual void anchor();
> protected:
> GlobalsSpaceRegion(MemRegionManager *mgr, Kind k)
> : MemSpaceRegion(mgr, k) {}
> @@ -223,6 +224,7 @@
> };
>
> class HeapSpaceRegion : public MemSpaceRegion {
> + virtual void anchor();
> friend class MemRegionManager;
>
> HeapSpaceRegion(MemRegionManager *mgr)
> @@ -234,6 +236,7 @@
> };
>
> class UnknownSpaceRegion : public MemSpaceRegion {
> + virtual void anchor();
> friend class MemRegionManager;
> UnknownSpaceRegion(MemRegionManager *mgr)
> : MemSpaceRegion(mgr, UnknownSpaceRegionKind) {}
> @@ -266,7 +269,7 @@
> };
>
> class StackLocalsSpaceRegion : public StackSpaceRegion {
> -private:
> + virtual void anchor();
> friend class MemRegionManager;
> StackLocalsSpaceRegion(MemRegionManager *mgr, const StackFrameContext *sfc)
> : StackSpaceRegion(mgr, StackLocalsSpaceRegionKind, sfc) {}
> @@ -278,6 +281,7 @@
>
> class StackArgumentsSpaceRegion : public StackSpaceRegion {
> private:
> + virtual void anchor();
> friend class MemRegionManager;
> StackArgumentsSpaceRegion(MemRegionManager *mgr, const StackFrameContext *sfc)
> : StackSpaceRegion(mgr, StackArgumentsSpaceRegionKind, sfc) {}
> @@ -291,6 +295,8 @@
> /// SubRegion - A region that subsets another larger region. Most regions
> /// are subclasses of SubRegion.
> class SubRegion : public MemRegion {
> +private:
> + virtual void anchor();
> protected:
> const MemRegion* superRegion;
> SubRegion(const MemRegion* sReg, Kind k) : MemRegion(k), superRegion(sReg) {}
> @@ -351,6 +357,8 @@
>
> /// TypedRegion - An abstract class representing regions that are typed.
> class TypedRegion : public SubRegion {
> +public:
> + virtual void anchor();
> protected:
> TypedRegion(const MemRegion* sReg, Kind k) : SubRegion(sReg, k) {}
>
> @@ -371,6 +379,8 @@
>
> /// TypedValueRegion - An abstract class representing regions having a typed value.
> class TypedValueRegion : public TypedRegion {
> +public:
> + virtual void anchor();
> protected:
> TypedValueRegion(const MemRegion* sReg, Kind k) : TypedRegion(sReg, k) {}
>
> @@ -399,6 +409,8 @@
>
>
> class CodeTextRegion : public TypedRegion {
> +public:
> + virtual void anchor();
> protected:
> CodeTextRegion(const MemRegion *sreg, Kind k) : TypedRegion(sreg, k) {}
> public:
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h Mon Dec 19 20:48:34 2011
> @@ -806,6 +806,7 @@
> /// A Utility class that allows to visit the reachable symbols using a custom
> /// SymbolVisitor.
> class ScanReachableSymbols : public SubRegionMap::Visitor {
> + virtual void anchor();
> typedef llvm::DenseMap<const void*, unsigned> VisitedItems;
>
> VisitedItems visited;
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h Mon Dec 19 20:48:34 2011
> @@ -28,6 +28,7 @@
> class ProgramState;
>
> class SValBuilder {
> + virtual void anchor();
> protected:
> ASTContext &Context;
>
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h Mon Dec 19 20:48:34 2011
> @@ -258,10 +258,12 @@
> /// SubRegionMap - An abstract interface that represents a queryable map
> /// between MemRegion objects and their subregions.
> class SubRegionMap {
> + virtual void anchor();
> public:
> virtual ~SubRegionMap() {}
>
> class Visitor {
> + virtual void anchor();
> public:
> virtual ~Visitor() {}
> virtual bool Visit(const MemRegion* Parent, const MemRegion* SubRegion) = 0;
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h Mon Dec 19 20:48:34 2011
> @@ -43,6 +43,7 @@
> class MemRegion;
>
> class SubEngine {
> + virtual void anchor();
> public:
> virtual ~SubEngine() {}
>
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h Mon Dec 19 20:48:34 2011
> @@ -43,6 +43,7 @@
> /// \brief Symbolic value. These values used to capture symbolic execution of
> /// the program.
> class SymExpr : public llvm::FoldingSetNode {
> + virtual void anchor();
> public:
> enum Kind { RegionValueKind, ConjuredKind, DerivedKind, ExtentKind,
> MetadataKind,
> @@ -102,7 +103,7 @@
> /// \brief A symbol representing data which can be stored in a memory location
> /// (region).
> class SymbolData : public SymExpr {
> -private:
> + virtual void anchor();
> const SymbolID Sym;
>
> protected:
>
> Modified: cfe/trunk/lib/AST/AttrImpl.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/AttrImpl.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/AttrImpl.cpp (original)
> +++ cfe/trunk/lib/AST/AttrImpl.cpp Mon Dec 19 20:48:34 2011
> @@ -19,4 +19,8 @@
>
> Attr::~Attr() { }
>
> +void InheritableAttr::anchor() { }
> +
> +void InheritableParamAttr::anchor() { }
> +
> #include "clang/AST/AttrImpl.inc"
>
> Modified: cfe/trunk/lib/AST/Decl.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Decl.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/Decl.cpp (original)
> +++ cfe/trunk/lib/AST/Decl.cpp Mon Dec 19 20:48:34 2011
> @@ -624,6 +624,8 @@
> }
> }
>
> +void NamedDecl::anchor() { }
> +
> void NamedDecl::ClearLinkageCache() {
> // Note that we can't skip clearing the linkage of children just
> // because the parent doesn't have cached linkage: we don't cache
> @@ -2424,6 +2426,8 @@
> // EnumDecl Implementation
> //===----------------------------------------------------------------------===//
>
> +void EnumDecl::anchor() { }
> +
> EnumDecl *EnumDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation StartLoc, SourceLocation IdLoc,
> IdentifierInfo *Id,
> @@ -2587,10 +2591,14 @@
> // Other Decl Allocation/Deallocation Method Implementations
> //===----------------------------------------------------------------------===//
>
> +void TranslationUnitDecl::anchor() { }
> +
> TranslationUnitDecl *TranslationUnitDecl::Create(ASTContext &C) {
> return new (C) TranslationUnitDecl(C);
> }
>
> +void LabelDecl::anchor() { }
> +
> LabelDecl *LabelDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation IdentL, IdentifierInfo *II) {
> return new (C) LabelDecl(DC, IdentL, II, 0, IdentL);
> @@ -2603,6 +2611,7 @@
> return new (C) LabelDecl(DC, IdentL, II, 0, GnuLabelL);
> }
>
> +void NamespaceDecl::anchor() { }
>
> NamespaceDecl *NamespaceDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation StartLoc,
> @@ -2615,6 +2624,10 @@
> NextNamespace.get(getASTContext().getExternalSource()));
> }
>
> +void ValueDecl::anchor() { }
> +
> +void ImplicitParamDecl::anchor() { }
> +
> ImplicitParamDecl *ImplicitParamDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation IdLoc,
> IdentifierInfo *Id,
> @@ -2649,6 +2662,8 @@
> return new (C) EnumConstantDecl(CD, L, Id, T, E, V);
> }
>
> +void IndirectFieldDecl::anchor() { }
> +
> IndirectFieldDecl *
> IndirectFieldDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation L,
> IdentifierInfo *Id, QualType T, NamedDecl **CH,
> @@ -2663,12 +2678,16 @@
> return SourceRange(getLocation(), End);
> }
>
> +void TypeDecl::anchor() { }
> +
> TypedefDecl *TypedefDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation StartLoc, SourceLocation IdLoc,
> IdentifierInfo *Id, TypeSourceInfo *TInfo) {
> return new (C) TypedefDecl(DC, StartLoc, IdLoc, Id, TInfo);
> }
>
> +void TypedefNameDecl::anchor() { }
> +
> TypeAliasDecl *TypeAliasDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation StartLoc,
> SourceLocation IdLoc, IdentifierInfo *Id,
> @@ -2692,6 +2711,8 @@
> return SourceRange(getLocStart(), RangeEnd);
> }
>
> +void FileScopeAsmDecl::anchor() { }
> +
> FileScopeAsmDecl *FileScopeAsmDecl::Create(ASTContext &C, DeclContext *DC,
> StringLiteral *Str,
> SourceLocation AsmLoc,
>
> Modified: cfe/trunk/lib/AST/DeclCXX.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclCXX.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/DeclCXX.cpp (original)
> +++ cfe/trunk/lib/AST/DeclCXX.cpp Mon Dec 19 20:48:34 2011
> @@ -28,6 +28,8 @@
> // Decl Allocation/Deallocation Method Implementations
> //===----------------------------------------------------------------------===//
>
> +void AccessSpecDecl::anchor() { }
> +
> CXXRecordDecl::DefinitionData::DefinitionData(CXXRecordDecl *D)
> : UserDeclaredConstructor(false), UserDeclaredCopyConstructor(false),
> UserDeclaredMoveConstructor(false), UserDeclaredCopyAssignment(false),
> @@ -1155,6 +1157,8 @@
> return false;
> }
>
> +void CXXMethodDecl::anchor() { }
> +
> CXXMethodDecl *
> CXXMethodDecl::Create(ASTContext &C, CXXRecordDecl *RD,
> SourceLocation StartLoc,
> @@ -1404,6 +1408,8 @@
> return SourceRange(getSourceLocation(), getRParenLoc());
> }
>
> +void CXXConstructorDecl::anchor() { }
> +
> CXXConstructorDecl *
> CXXConstructorDecl::Create(ASTContext &C, EmptyShell Empty) {
> return new (C) CXXConstructorDecl(0, SourceLocation(), DeclarationNameInfo(),
> @@ -1548,6 +1554,8 @@
> addOverriddenMethod(BaseCtor);
> }
>
> +void CXXDestructorDecl::anchor() { }
> +
> CXXDestructorDecl *
> CXXDestructorDecl::Create(ASTContext &C, EmptyShell Empty) {
> return new (C) CXXDestructorDecl(0, SourceLocation(), DeclarationNameInfo(),
> @@ -1567,6 +1575,8 @@
> isImplicitlyDeclared);
> }
>
> +void CXXConversionDecl::anchor() { }
> +
> CXXConversionDecl *
> CXXConversionDecl::Create(ASTContext &C, EmptyShell Empty) {
> return new (C) CXXConversionDecl(0, SourceLocation(), DeclarationNameInfo(),
> @@ -1589,6 +1599,8 @@
> EndLocation);
> }
>
> +void LinkageSpecDecl::anchor() { }
> +
> LinkageSpecDecl *LinkageSpecDecl::Create(ASTContext &C,
> DeclContext *DC,
> SourceLocation ExternLoc,
> @@ -1598,6 +1610,8 @@
> return new (C) LinkageSpecDecl(DC, ExternLoc, LangLoc, Lang, RBraceLoc);
> }
>
> +void UsingDirectiveDecl::anchor() { }
> +
> UsingDirectiveDecl *UsingDirectiveDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation L,
> SourceLocation NamespaceLoc,
> @@ -1618,6 +1632,8 @@
> return cast_or_null<NamespaceDecl>(NominatedNamespace);
> }
>
> +void NamespaceAliasDecl::anchor() { }
> +
> NamespaceAliasDecl *NamespaceAliasDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation UsingLoc,
> SourceLocation AliasLoc,
> @@ -1631,6 +1647,8 @@
> QualifierLoc, IdentLoc, Namespace);
> }
>
> +void UsingShadowDecl::anchor() { }
> +
> UsingDecl *UsingShadowDecl::getUsingDecl() const {
> const UsingShadowDecl *Shadow = this;
> while (const UsingShadowDecl *NextShadow =
> @@ -1639,6 +1657,8 @@
> return cast<UsingDecl>(Shadow->UsingOrNextShadow);
> }
>
> +void UsingDecl::anchor() { }
> +
> void UsingDecl::addShadowDecl(UsingShadowDecl *S) {
> assert(std::find(shadow_begin(), shadow_end(), S) == shadow_end() &&
> "declaration already in set");
> @@ -1676,6 +1696,8 @@
> return new (C) UsingDecl(DC, UL, QualifierLoc, NameInfo, IsTypeNameArg);
> }
>
> +void UnresolvedUsingValueDecl::anchor() { }
> +
> UnresolvedUsingValueDecl *
> UnresolvedUsingValueDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation UsingLoc,
> @@ -1685,6 +1707,8 @@
> QualifierLoc, NameInfo);
> }
>
> +void UnresolvedUsingTypenameDecl::anchor() { }
> +
> UnresolvedUsingTypenameDecl *
> UnresolvedUsingTypenameDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation UsingLoc,
> @@ -1697,6 +1721,8 @@
> TargetName.getAsIdentifierInfo());
> }
>
> +void StaticAssertDecl::anchor() { }
> +
> StaticAssertDecl *StaticAssertDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation StaticAssertLoc,
> Expr *AssertExpr,
>
> Modified: cfe/trunk/lib/AST/DeclFriend.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclFriend.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/DeclFriend.cpp (original)
> +++ cfe/trunk/lib/AST/DeclFriend.cpp Mon Dec 19 20:48:34 2011
> @@ -16,6 +16,8 @@
> #include "clang/AST/DeclTemplate.h"
> using namespace clang;
>
> +void FriendDecl::anchor() { }
> +
> FriendDecl *FriendDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation L,
> FriendUnion Friend,
>
> Modified: cfe/trunk/lib/AST/DeclObjC.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclObjC.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/DeclObjC.cpp (original)
> +++ cfe/trunk/lib/AST/DeclObjC.cpp Mon Dec 19 20:48:34 2011
> @@ -46,6 +46,8 @@
> // ObjCInterfaceDecl
> //===----------------------------------------------------------------------===//
>
> +void ObjCContainerDecl::anchor() { }
> +
> /// getIvarDecl - This method looks up an ivar in this ContextDecl.
> ///
> ObjCIvarDecl *
> @@ -147,6 +149,8 @@
> return 0;
> }
>
> +void ObjCInterfaceDecl::anchor() { }
> +
> /// FindPropertyVisibleInPrimaryClass - Finds declaration of the property
> /// with name 'PropertyId' in the primary class; including those in protocols
> /// (direct or indirect) used by the primary class.
> @@ -876,6 +880,8 @@
> // ObjCIvarDecl
> //===----------------------------------------------------------------------===//
>
> +void ObjCIvarDecl::anchor() { }
> +
> ObjCIvarDecl *ObjCIvarDecl::Create(ASTContext &C, ObjCContainerDecl *DC,
> SourceLocation StartLoc,
> SourceLocation IdLoc, IdentifierInfo *Id,
> @@ -946,6 +952,8 @@
> // ObjCAtDefsFieldDecl
> //===----------------------------------------------------------------------===//
>
> +void ObjCAtDefsFieldDecl::anchor() { }
> +
> ObjCAtDefsFieldDecl
> *ObjCAtDefsFieldDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation StartLoc, SourceLocation IdLoc,
> @@ -957,6 +965,8 @@
> // ObjCProtocolDecl
> //===----------------------------------------------------------------------===//
>
> +void ObjCProtocolDecl::anchor() { }
> +
> ObjCProtocolDecl *ObjCProtocolDecl::Create(ASTContext &C, DeclContext *DC,
> IdentifierInfo *Id,
> SourceLocation nameLoc,
> @@ -1026,6 +1036,8 @@
> // ObjCForwardProtocolDecl
> //===----------------------------------------------------------------------===//
>
> +void ObjCForwardProtocolDecl::anchor() { }
> +
> ObjCForwardProtocolDecl::
> ObjCForwardProtocolDecl(DeclContext *DC, SourceLocation L,
> ObjCProtocolDecl *const *Elts, unsigned nElts,
> @@ -1048,6 +1060,8 @@
> // ObjCCategoryDecl
> //===----------------------------------------------------------------------===//
>
> +void ObjCCategoryDecl::anchor() { }
> +
> ObjCCategoryDecl *ObjCCategoryDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation AtLoc,
> SourceLocation ClassNameLoc,
> @@ -1089,6 +1103,8 @@
> // ObjCCategoryImplDecl
> //===----------------------------------------------------------------------===//
>
> +void ObjCCategoryImplDecl::anchor() { }
> +
> ObjCCategoryImplDecl *
> ObjCCategoryImplDecl::Create(ASTContext &C, DeclContext *DC,
> IdentifierInfo *Id,
> @@ -1108,6 +1124,8 @@
> }
>
>
> +void ObjCImplDecl::anchor() { }
> +
> void ObjCImplDecl::addPropertyImplementation(ObjCPropertyImplDecl *property) {
> // FIXME: The context should be correct before we get here.
> property->setLexicalDeclContext(this);
> @@ -1170,6 +1188,8 @@
> // ObjCImplementationDecl
> //===----------------------------------------------------------------------===//
>
> +void ObjCImplementationDecl::anchor() { }
> +
> ObjCImplementationDecl *
> ObjCImplementationDecl::Create(ASTContext &C, DeclContext *DC,
> ObjCInterfaceDecl *ClassInterface,
> @@ -1203,6 +1223,8 @@
> // ObjCCompatibleAliasDecl
> //===----------------------------------------------------------------------===//
>
> +void ObjCCompatibleAliasDecl::anchor() { }
> +
> ObjCCompatibleAliasDecl *
> ObjCCompatibleAliasDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation L,
> @@ -1215,6 +1237,8 @@
> // ObjCPropertyDecl
> //===----------------------------------------------------------------------===//
>
> +void ObjCPropertyDecl::anchor() { }
> +
> ObjCPropertyDecl *ObjCPropertyDecl::Create(ASTContext &C, DeclContext *DC,
> SourceLocation L,
> IdentifierInfo *Id,
>
> Modified: cfe/trunk/lib/AST/DeclTemplate.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclTemplate.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/DeclTemplate.cpp (original)
> +++ cfe/trunk/lib/AST/DeclTemplate.cpp Mon Dec 19 20:48:34 2011
> @@ -537,6 +537,8 @@
> // TemplateTemplateParmDecl Method Implementations
> //===----------------------------------------------------------------------===//
>
> +void TemplateTemplateParmDecl::anchor() { }
> +
> TemplateTemplateParmDecl *
> TemplateTemplateParmDecl::Create(const ASTContext &C, DeclContext *DC,
> SourceLocation L, unsigned D, unsigned P,
> @@ -582,6 +584,12 @@
> }
>
> //===----------------------------------------------------------------------===//
> +// TemplateDecl Implementation
> +//===----------------------------------------------------------------------===//
> +
> +void TemplateDecl::anchor() { }
> +
> +//===----------------------------------------------------------------------===//
> // ClassTemplateSpecializationDecl Implementation
> //===----------------------------------------------------------------------===//
> ClassTemplateSpecializationDecl::
> @@ -682,6 +690,8 @@
> //===----------------------------------------------------------------------===//
> // ClassTemplatePartialSpecializationDecl Implementation
> //===----------------------------------------------------------------------===//
> +void ClassTemplatePartialSpecializationDecl::anchor() { }
> +
> ClassTemplatePartialSpecializationDecl::
> ClassTemplatePartialSpecializationDecl(ASTContext &Context, TagKind TK,
> DeclContext *DC,
> @@ -749,6 +759,8 @@
> // FriendTemplateDecl Implementation
> //===----------------------------------------------------------------------===//
>
> +void FriendTemplateDecl::anchor() { }
> +
> FriendTemplateDecl *FriendTemplateDecl::Create(ASTContext &Context,
> DeclContext *DC,
> SourceLocation L,
> @@ -796,3 +808,8 @@
> return CommonPtr;
> }
>
> +//===----------------------------------------------------------------------===//
> +// ClassScopeFunctionSpecializationDecl Implementation
> +//===----------------------------------------------------------------------===//
> +
> +void ClassScopeFunctionSpecializationDecl::anchor() { }
>
> Modified: cfe/trunk/lib/AST/ExprCXX.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprCXX.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/ExprCXX.cpp (original)
> +++ cfe/trunk/lib/AST/ExprCXX.cpp Mon Dec 19 20:48:34 2011
> @@ -1023,4 +1023,4 @@
> return TemplateArgument(Arguments, NumArguments);
> }
>
> -
> +void ArrayTypeTraitExpr::anchor() { }
>
> Modified: cfe/trunk/lib/AST/Mangle.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Mangle.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/Mangle.cpp (original)
> +++ cfe/trunk/lib/AST/Mangle.cpp Mon Dec 19 20:48:34 2011
> @@ -59,6 +59,8 @@
>
> }
>
> +void MangleContext::anchor() { }
> +
> void MangleContext::mangleGlobalBlock(const BlockDecl *BD,
> raw_ostream &Out) {
> Out << "__block_global_" << getBlockId(BD, false);
>
> Added: cfe/trunk/lib/Analysis/Dominators.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/Dominators.cpp?rev=146959&view=auto
> ==============================================================================
> --- cfe/trunk/lib/Analysis/Dominators.cpp (added)
> +++ cfe/trunk/lib/Analysis/Dominators.cpp Mon Dec 19 20:48:34 2011
> @@ -0,0 +1,14 @@
> +//=- Dominators.cpp - Implementation of dominators tree for Clang CFG C++ -*-=//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +#include "clang/Analysis/Analyses/Dominators.h"
> +
> +using namespace clang;
> +
> +void DominatorTree::anchor() { }
>
> Modified: cfe/trunk/lib/Analysis/LiveVariables.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/LiveVariables.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Analysis/LiveVariables.cpp (original)
> +++ cfe/trunk/lib/Analysis/LiveVariables.cpp Mon Dec 19 20:48:34 2011
> @@ -143,6 +143,8 @@
> }
> }
>
> +void LiveVariables::Observer::anchor() { }
> +
> LiveVariables::LivenessValues
> LiveVariablesImpl::merge(LiveVariables::LivenessValues valsA,
> LiveVariables::LivenessValues valsB) {
>
> Modified: cfe/trunk/lib/Analysis/PostOrderCFGView.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/PostOrderCFGView.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Analysis/PostOrderCFGView.cpp (original)
> +++ cfe/trunk/lib/Analysis/PostOrderCFGView.cpp Mon Dec 19 20:48:34 2011
> @@ -15,6 +15,8 @@
>
> using namespace clang;
>
> +void PostOrderCFGView::anchor() { }
> +
> PostOrderCFGView::PostOrderCFGView(const CFG *cfg) {
> Blocks.reserve(cfg->getNumBlockIDs());
> CFGBlockSet BSet(cfg);
>
> Modified: cfe/trunk/lib/Analysis/ReachableCode.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/ReachableCode.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Analysis/ReachableCode.cpp (original)
> +++ cfe/trunk/lib/Analysis/ReachableCode.cpp Mon Dec 19 20:48:34 2011
> @@ -251,7 +251,9 @@
> }
>
> namespace clang { namespace reachable_code {
> -
> +
> +void Callback::anchor() { }
> +
> unsigned ScanReachableFromBlock(const CFGBlock *Start,
> llvm::BitVector &Reachable) {
> unsigned count = 0;
>
> Modified: cfe/trunk/lib/Basic/Diagnostic.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Diagnostic.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Basic/Diagnostic.cpp (original)
> +++ cfe/trunk/lib/Basic/Diagnostic.cpp Mon Dec 19 20:48:34 2011
> @@ -825,6 +825,8 @@
> /// reported by DiagnosticsEngine.
> bool DiagnosticConsumer::IncludeInDiagnosticCounts() const { return true; }
>
> +void IgnoringDiagConsumer::anchor() { }
> +
> PartialDiagnostic::StorageAllocator::StorageAllocator() {
> for (unsigned I = 0; I != NumCached; ++I)
> FreeList[I] = Cached + I;
>
> Modified: cfe/trunk/lib/Basic/FileSystemStatCache.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/FileSystemStatCache.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Basic/FileSystemStatCache.cpp (original)
> +++ cfe/trunk/lib/Basic/FileSystemStatCache.cpp Mon Dec 19 20:48:34 2011
> @@ -28,6 +28,8 @@
> #define S_ISDIR(s) ((_S_IFDIR & s) !=0)
> #endif
>
> +void FileSystemStatCache::anchor() { }
> +
> /// FileSystemStatCache::get - Get the 'stat' information for the specified
> /// path, using the cache to accelerate it if possible. This returns true if
> /// the path does not exist or false if it exists.
>
> Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CodeGenAction.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp Mon Dec 19 20:48:34 2011
> @@ -33,6 +33,7 @@
>
> namespace clang {
> class BackendConsumer : public ASTConsumer {
> + virtual void anchor();
> DiagnosticsEngine &Diags;
> BackendAction Action;
> const CodeGenOptions &CodeGenOpts;
> @@ -180,6 +181,8 @@
> void InlineAsmDiagHandler2(const llvm::SMDiagnostic &,
> SourceLocation LocCookie);
> };
> +
> + void BackendConsumer::anchor() {}
> }
>
> /// ConvertBackendLocation - Convert a location in a temporary llvm::SourceMgr
> @@ -406,20 +409,26 @@
>
> //
>
> +void EmitAssemblyAction::anchor() { }
> EmitAssemblyAction::EmitAssemblyAction(llvm::LLVMContext *_VMContext)
> : CodeGenAction(Backend_EmitAssembly, _VMContext) {}
>
> +void EmitBCAction::anchor() { }
> EmitBCAction::EmitBCAction(llvm::LLVMContext *_VMContext)
> : CodeGenAction(Backend_EmitBC, _VMContext) {}
>
> +void EmitLLVMAction::anchor() { }
> EmitLLVMAction::EmitLLVMAction(llvm::LLVMContext *_VMContext)
> : CodeGenAction(Backend_EmitLL, _VMContext) {}
>
> +void EmitLLVMOnlyAction::anchor() { }
> EmitLLVMOnlyAction::EmitLLVMOnlyAction(llvm::LLVMContext *_VMContext)
> : CodeGenAction(Backend_EmitNothing, _VMContext) {}
>
> +void EmitCodeGenOnlyAction::anchor() { }
> EmitCodeGenOnlyAction::EmitCodeGenOnlyAction(llvm::LLVMContext *_VMContext)
> : CodeGenAction(Backend_EmitMCNull, _VMContext) {}
>
> +void EmitObjAction::anchor() { }
> EmitObjAction::EmitObjAction(llvm::LLVMContext *_VMContext)
> : CodeGenAction(Backend_EmitObj, _VMContext) {}
>
> Modified: cfe/trunk/lib/CodeGen/ModuleBuilder.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ModuleBuilder.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/ModuleBuilder.cpp (original)
> +++ cfe/trunk/lib/CodeGen/ModuleBuilder.cpp Mon Dec 19 20:48:34 2011
> @@ -113,6 +113,8 @@
> };
> }
>
> +void CodeGenerator::anchor() { }
> +
> CodeGenerator *clang::CreateLLVMCodeGen(DiagnosticsEngine &Diags,
> const std::string& ModuleName,
> const CodeGenOptions &CGO,
>
> Modified: cfe/trunk/lib/Driver/Action.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Action.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Driver/Action.cpp (original)
> +++ cfe/trunk/lib/Driver/Action.cpp Mon Dec 19 20:48:34 2011
> @@ -38,14 +38,20 @@
> llvm_unreachable("invalid class");
> }
>
> +void InputAction::anchor() {}
> +
> InputAction::InputAction(const Arg &_Input, types::ID _Type)
> : Action(InputClass, _Type), Input(_Input) {
> }
>
> +void BindArchAction::anchor() {}
> +
> BindArchAction::BindArchAction(Action *Input, const char *_ArchName)
> : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) {
> }
>
> +void JobAction::anchor() {}
> +
> JobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type)
> : Action(Kind, Input, Type) {
> }
> @@ -54,38 +60,56 @@
> : Action(Kind, Inputs, Type) {
> }
>
> +void PreprocessJobAction::anchor() {}
> +
> PreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType)
> : JobAction(PreprocessJobClass, Input, OutputType) {
> }
>
> +void PrecompileJobAction::anchor() {}
> +
> PrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType)
> : JobAction(PrecompileJobClass, Input, OutputType) {
> }
>
> +void AnalyzeJobAction::anchor() {}
> +
> AnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType)
> : JobAction(AnalyzeJobClass, Input, OutputType) {
> }
>
> +void CompileJobAction::anchor() {}
> +
> CompileJobAction::CompileJobAction(Action *Input, types::ID OutputType)
> : JobAction(CompileJobClass, Input, OutputType) {
> }
>
> +void AssembleJobAction::anchor() {}
> +
> AssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType)
> : JobAction(AssembleJobClass, Input, OutputType) {
> }
>
> +void LinkJobAction::anchor() {}
> +
> LinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type)
> : JobAction(LinkJobClass, Inputs, Type) {
> }
>
> +void LipoJobAction::anchor() {}
> +
> LipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type)
> : JobAction(LipoJobClass, Inputs, Type) {
> }
>
> +void DsymutilJobAction::anchor() {}
> +
> DsymutilJobAction::DsymutilJobAction(ActionList &Inputs, types::ID Type)
> : JobAction(DsymutilJobClass, Inputs, Type) {
> }
>
> +void VerifyJobAction::anchor() {}
> +
> VerifyJobAction::VerifyJobAction(ActionList &Inputs, types::ID Type)
> : JobAction(VerifyJobClass, Inputs, Type) {
> }
>
> Modified: cfe/trunk/lib/Driver/Job.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Job.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Driver/Job.cpp (original)
> +++ cfe/trunk/lib/Driver/Job.cpp Mon Dec 19 20:48:34 2011
> @@ -16,6 +16,8 @@
>
> Job::~Job() {}
>
> +void Command::anchor() {}
> +
> Command::Command(const Action &_Source, const Tool &_Creator,
> const char *_Executable, const ArgStringList &_Arguments)
> : Job(CommandClass), Source(_Source), Creator(_Creator),
>
> Modified: cfe/trunk/lib/Driver/ToolChains.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Driver/ToolChains.cpp (original)
> +++ cfe/trunk/lib/Driver/ToolChains.cpp Mon Dec 19 20:48:34 2011
> @@ -192,6 +192,8 @@
> return Triple.getTriple();
> }
>
> +void Generic_ELF::anchor() {}
> +
> Tool &Darwin::SelectTool(const Compilation &C, const JobAction &JA,
> const ActionList &Inputs) const {
> Action::ActionClass Key;
>
> Modified: cfe/trunk/lib/Driver/ToolChains.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Driver/ToolChains.h (original)
> +++ cfe/trunk/lib/Driver/ToolChains.h Mon Dec 19 20:48:34 2011
> @@ -423,7 +423,8 @@
> };
>
> class LLVM_LIBRARY_VISIBILITY Generic_ELF : public Generic_GCC {
> - public:
> + virtual void anchor();
> +public:
> Generic_ELF(const HostInfo &Host, const llvm::Triple& Triple)
> : Generic_GCC(Host, Triple) {}
>
>
> Modified: cfe/trunk/lib/Driver/Tools.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Driver/Tools.cpp (original)
> +++ cfe/trunk/lib/Driver/Tools.cpp Mon Dec 19 20:48:34 2011
> @@ -2865,6 +2865,8 @@
> }
> }
>
> +void darwin::CC1::anchor() {}
> +
> const char *darwin::CC1::getBaseInputName(const ArgList &Args,
> const InputInfoList &Inputs) {
> return Args.MakeArgString(
> @@ -3509,6 +3511,8 @@
> C.addCommand(new Command(JA, *this, Exec, CmdArgs));
> }
>
> +void darwin::DarwinTool::anchor() {}
> +
> void darwin::DarwinTool::AddDarwinArch(const ArgList &Args,
> ArgStringList &CmdArgs) const {
> StringRef ArchName = getDarwinToolChain().getDarwinArchName(Args);
>
> Modified: cfe/trunk/lib/Driver/Tools.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.h?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Driver/Tools.h (original)
> +++ cfe/trunk/lib/Driver/Tools.h Mon Dec 19 20:48:34 2011
> @@ -192,6 +192,7 @@
>
> namespace darwin {
> class LLVM_LIBRARY_VISIBILITY DarwinTool : public Tool {
> + virtual void anchor();
> protected:
> void AddDarwinArch(const ArgList &Args, ArgStringList &CmdArgs) const;
>
> @@ -205,6 +206,7 @@
> };
>
> class LLVM_LIBRARY_VISIBILITY CC1 : public DarwinTool {
> + virtual void anchor();
> public:
> static const char *getBaseInputName(const ArgList &Args,
> const InputInfoList &Input);
>
> Added: cfe/trunk/lib/Frontend/ChainedDiagnosticConsumer.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ChainedDiagnosticConsumer.cpp?rev=146959&view=auto
> ==============================================================================
> --- cfe/trunk/lib/Frontend/ChainedDiagnosticConsumer.cpp (added)
> +++ cfe/trunk/lib/Frontend/ChainedDiagnosticConsumer.cpp Mon Dec 19 20:48:34 2011
> @@ -0,0 +1,14 @@
> +//===- ChainedDiagnosticConsumer.cpp - Chain Diagnostic Clients -*- C++ -*-===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +#include "clang/Frontend/ChainedDiagnosticConsumer.h"
> +
> +using namespace clang;
> +
> +void ChainedDiagnosticConsumer::anchor() { }
>
> Modified: cfe/trunk/lib/Frontend/FrontendAction.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/FrontendAction.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Frontend/FrontendAction.cpp (original)
> +++ cfe/trunk/lib/Frontend/FrontendAction.cpp Mon Dec 19 20:48:34 2011
> @@ -411,6 +411,8 @@
> ParseAST(CI.getSema(), CI.getFrontendOpts().ShowStats);
> }
>
> +void PluginASTAction::anchor() { }
> +
> ASTConsumer *
> PreprocessorFrontendAction::CreateASTConsumer(CompilerInstance &CI,
> StringRef InFile) {
>
> Modified: cfe/trunk/lib/Lex/Lexer.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/Lexer.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Lex/Lexer.cpp (original)
> +++ cfe/trunk/lib/Lex/Lexer.cpp Mon Dec 19 20:48:34 2011
> @@ -59,6 +59,8 @@
> // Lexer Class Implementation
> //===----------------------------------------------------------------------===//
>
> +void Lexer::anchor() { }
> +
> void Lexer::InitLexer(const char *BufStart, const char *BufPtr,
> const char *BufEnd) {
> InitCharacterInfo();
>
> Added: cfe/trunk/lib/Lex/PPCallbacks.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPCallbacks.cpp?rev=146959&view=auto
> ==============================================================================
> --- cfe/trunk/lib/Lex/PPCallbacks.cpp (added)
> +++ cfe/trunk/lib/Lex/PPCallbacks.cpp Mon Dec 19 20:48:34 2011
> @@ -0,0 +1,14 @@
> +//===--- PPCallbacks.cpp - Callbacks for Preprocessor actions ---*- C++ -*-===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +#include "clang/Lex/PPCallbacks.h"
> +
> +using namespace clang;
> +
> +void PPChainedCallbacks::anchor() { }
>
> Modified: cfe/trunk/lib/Lex/PreprocessorLexer.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PreprocessorLexer.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Lex/PreprocessorLexer.cpp (original)
> +++ cfe/trunk/lib/Lex/PreprocessorLexer.cpp Mon Dec 19 20:48:34 2011
> @@ -17,6 +17,8 @@
> #include "clang/Basic/SourceManager.h"
> using namespace clang;
>
> +void PreprocessorLexer::anchor() { }
> +
> PreprocessorLexer::PreprocessorLexer(Preprocessor *pp, FileID fid)
> : PP(pp), FID(fid), InitialNumSLocEntries(0),
> ParsingPreprocessorDirective(false),
>
> Modified: cfe/trunk/lib/Parse/ParseObjc.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseObjc.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Parse/ParseObjc.cpp (original)
> +++ cfe/trunk/lib/Parse/ParseObjc.cpp Mon Dec 19 20:48:34 2011
> @@ -284,6 +284,9 @@
> /// The Objective-C property callback. This should be defined where
> /// it's used, but instead it's been lifted to here to support VS2005.
> struct Parser::ObjCPropertyCallback : FieldCallback {
> +private:
> + virtual void anchor();
> +public:
> Parser &P;
> SmallVectorImpl<Decl *> &Props;
> ObjCDeclSpec &OCDS;
> @@ -337,6 +340,9 @@
> }
> };
>
> +void Parser::ObjCPropertyCallback::anchor() {
> +}
> +
> /// objc-interface-decl-list:
> /// empty
> /// objc-interface-decl-list objc-property-decl [OBJC2]
>
> Modified: cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp (original)
> +++ cfe/trunk/lib/Sema/AnalysisBasedWarnings.cpp Mon Dec 19 20:48:34 2011
> @@ -634,6 +634,7 @@
> }
> };
>
> +namespace {
> class ThreadSafetyReporter : public clang::thread_safety::ThreadSafetyHandler {
> Sema &S;
> DiagList Warnings;
> @@ -744,6 +745,7 @@
> };
> }
> }
> +}
>
> //===----------------------------------------------------------------------===//
> // AnalysisBasedWarnings - Worker object used by Sema to execute analysis-based
>
> Added: cfe/trunk/lib/Sema/SemaConsumer.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaConsumer.cpp?rev=146959&view=auto
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaConsumer.cpp (added)
> +++ cfe/trunk/lib/Sema/SemaConsumer.cpp Mon Dec 19 20:48:34 2011
> @@ -0,0 +1,14 @@
> +//===-- SemaConsumer.cpp - Abstract interface for AST semantics -*- C++ -*-===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +#include "clang/Sema/SemaConsumer.h"
> +
> +using namespace clang;
> +
> +void SemaConsumer::anchor() { }
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/AnalysisManager.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/AnalysisManager.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/AnalysisManager.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/AnalysisManager.cpp Mon Dec 19 20:48:34 2011
> @@ -14,6 +14,8 @@
> using namespace clang;
> using namespace ento;
>
> +void AnalysisManager::anchor() { }
> +
> AnalysisManager::AnalysisManager(ASTContext &ctx, DiagnosticsEngine &diags,
> const LangOptions &lang,
> PathDiagnosticConsumer *pd,
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp Mon Dec 19 20:48:34 2011
> @@ -34,6 +34,8 @@
>
> BugReporterVisitor::~BugReporterVisitor() {}
>
> +void BugReporterContext::anchor() {}
> +
> //===----------------------------------------------------------------------===//
> // Helper routines for walking the ExplodedGraph and fetching statements.
> //===----------------------------------------------------------------------===//
> @@ -1204,10 +1206,14 @@
>
> void BugType::FlushReports(BugReporter &BR) {}
>
> +void BuiltinBug::anchor() {}
> +
> //===----------------------------------------------------------------------===//
> // Methods for BugReport and subclasses.
> //===----------------------------------------------------------------------===//
>
> +void BugReport::NodeResolver::anchor() {}
> +
> void BugReport::addVisitor(BugReporterVisitor* visitor) {
> if (!visitor)
> return;
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/Checker.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/Checker.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/Checker.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/Checker.cpp Mon Dec 19 20:48:34 2011
> @@ -20,3 +20,11 @@
> // FIXME: We want to return the package + name of the checker here.
> return "A Checker";
> }
> +
> +void Checker<check::_VoidCheck, check::_VoidCheck, check::_VoidCheck,
> + check::_VoidCheck, check::_VoidCheck, check::_VoidCheck,
> + check::_VoidCheck, check::_VoidCheck, check::_VoidCheck,
> + check::_VoidCheck, check::_VoidCheck, check::_VoidCheck,
> + check::_VoidCheck, check::_VoidCheck, check::_VoidCheck,
> + check::_VoidCheck, check::_VoidCheck, check::_VoidCheck
> + >::anchor() { }
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/CoreEngine.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/CoreEngine.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/CoreEngine.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/CoreEngine.cpp Mon Dec 19 20:48:34 2011
> @@ -537,6 +537,8 @@
> }
>
>
> +void NodeBuilder::anchor() { }
> +
> ExplodedNode* NodeBuilder::generateNodeImpl(const ProgramPoint &Loc,
> const ProgramState *State,
> ExplodedNode *FromN,
> @@ -556,6 +558,8 @@
> return N;
> }
>
> +void NodeBuilderWithSinks::anchor() { }
> +
> StmtNodeBuilder::~StmtNodeBuilder() {
> if (EnclosingBldr)
> for (ExplodedNodeSet::iterator I = Frontier.begin(),
> @@ -563,6 +567,8 @@
> EnclosingBldr->addNodes(*I);
> }
>
> +void BranchNodeBuilder::anchor() { }
> +
> ExplodedNode *BranchNodeBuilder::generateNode(const ProgramState *State,
> bool branch,
> ExplodedNode *NodePred) {
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/ExplodedGraph.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/ExplodedGraph.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/ExplodedGraph.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/ExplodedGraph.cpp Mon Dec 19 20:48:34 2011
> @@ -379,6 +379,8 @@
> return G;
> }
>
> +void InterExplodedGraphMap::anchor() { }
> +
> ExplodedNode*
> InterExplodedGraphMap::getMappedNode(const ExplodedNode *N) const {
> llvm::DenseMap<const ExplodedNode*, ExplodedNode*>::const_iterator I =
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/MemRegion.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/MemRegion.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/MemRegion.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/MemRegion.cpp Mon Dec 19 20:48:34 2011
> @@ -384,6 +384,20 @@
> }
>
> //===----------------------------------------------------------------------===//
> +// Region anchors.
> +//===----------------------------------------------------------------------===//
> +
> +void GlobalsSpaceRegion::anchor() { }
> +void HeapSpaceRegion::anchor() { }
> +void UnknownSpaceRegion::anchor() { }
> +void StackLocalsSpaceRegion::anchor() { }
> +void StackArgumentsSpaceRegion::anchor() { }
> +void TypedRegion::anchor() { }
> +void TypedValueRegion::anchor() { }
> +void CodeTextRegion::anchor() { }
> +void SubRegion::anchor() { }
> +
> +//===----------------------------------------------------------------------===//
> // Region pretty-printing.
> //===----------------------------------------------------------------------===//
>
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp Mon Dec 19 20:48:34 2011
> @@ -82,6 +82,8 @@
> Desc(StripTrailingDots(desc)),
> Category(StripTrailingDots(category)) {}
>
> +void PathDiagnosticConsumer::anchor() { }
> +
> void PathDiagnosticConsumer::HandlePathDiagnostic(const PathDiagnostic *D) {
> // For now this simply forwards to HandlePathDiagnosticImpl. In the future
> // we can use this indirection to control for multi-threaded access to
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/ProgramState.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/ProgramState.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/ProgramState.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/ProgramState.cpp Mon Dec 19 20:48:34 2011
> @@ -536,6 +536,8 @@
> return getPersistentState(NewState);
> }
>
> +void ScanReachableSymbols::anchor() { }
> +
> bool ScanReachableSymbols::scan(nonloc::CompoundVal val) {
> for (nonloc::CompoundVal::iterator I=val.begin(), E=val.end(); I!=E; ++I)
> if (!scan(*I))
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/SValBuilder.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/SValBuilder.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/SValBuilder.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/SValBuilder.cpp Mon Dec 19 20:48:34 2011
> @@ -25,6 +25,8 @@
> // Basic SVal creation.
> //===----------------------------------------------------------------------===//
>
> +void SValBuilder::anchor() { }
> +
> DefinedOrUnknownSVal SValBuilder::makeZeroVal(QualType type) {
> if (Loc::isLocType(type))
> return makeNull();
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/Store.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/Store.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/Store.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/Store.cpp Mon Dec 19 20:48:34 2011
> @@ -331,3 +331,5 @@
>
> StoreManager::BindingsHandler::~BindingsHandler() {}
>
> +void SubRegionMap::anchor() { }
> +void SubRegionMap::Visitor::anchor() { }
>
> Added: cfe/trunk/lib/StaticAnalyzer/Core/SubEngine.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/SubEngine.cpp?rev=146959&view=auto
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/SubEngine.cpp (added)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/SubEngine.cpp Mon Dec 19 20:48:34 2011
> @@ -0,0 +1,14 @@
> +//== SubEngine.cpp - Interface of the subengine of CoreEngine ------*- C++ -*-//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +#include "clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h"
> +
> +using namespace clang::ento;
> +
> +void SubEngine::anchor() { }
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/SymbolManager.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/SymbolManager.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/SymbolManager.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/SymbolManager.cpp Mon Dec 19 20:48:34 2011
> @@ -21,6 +21,8 @@
> using namespace clang;
> using namespace ento;
>
> +void SymExpr::anchor() { }
> +
> void SymExpr::dump() const {
> dumpToStream(llvm::errs());
> }
> @@ -99,6 +101,8 @@
> << getRegion() << ',' << T.getAsString() << '}';
> }
>
> +void SymbolData::anchor() { }
> +
> void SymbolRegionValue::dumpToStream(raw_ostream &os) const {
> os << "reg_$" << getSymbolID() << "<" << R << ">";
> }
>
> Modified: cfe/trunk/utils/TableGen/TableGen.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/TableGen.cpp?rev=146959&r1=146958&r2=146959&view=diff
> ==============================================================================
> --- cfe/trunk/utils/TableGen/TableGen.cpp (original)
> +++ cfe/trunk/utils/TableGen/TableGen.cpp Mon Dec 19 20:48:34 2011
> @@ -96,7 +96,6 @@
> ClangComponent("clang-component",
> cl::desc("Only use warnings from specified component"),
> cl::value_desc("component"), cl::Hidden);
> -}
>
> class ClangTableGenAction : public TableGenAction {
> public:
> @@ -165,6 +164,7 @@
> return false;
> }
> };
> +}
>
> int main(int argc, char **argv) {
> sys::PrintStackTraceOnErrorSignal();
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list