mirror of
https://github.com/intel/llvm.git
synced 2026-01-18 07:57:36 +08:00
Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
llvm-svn: 146959
This commit is contained in:
@@ -112,6 +112,7 @@ public:
|
||||
};
|
||||
|
||||
class InheritableAttr : public Attr {
|
||||
virtual void anchor();
|
||||
protected:
|
||||
InheritableAttr(attr::Kind AK, SourceRange R)
|
||||
: Attr(AK, R) {}
|
||||
@@ -127,6 +128,7 @@ public:
|
||||
};
|
||||
|
||||
class InheritableParamAttr : public InheritableAttr {
|
||||
virtual void anchor();
|
||||
protected:
|
||||
InheritableParamAttr(attr::Kind AK, SourceRange R)
|
||||
: InheritableAttr(AK, R) {}
|
||||
|
||||
@@ -67,6 +67,7 @@ public:
|
||||
|
||||
/// 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 @@ public:
|
||||
/// 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 @@ inline raw_ostream &operator<<(raw_ostream &OS, const NamedDecl &ND) {
|
||||
/// 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 @@ public:
|
||||
|
||||
/// 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 @@ public:
|
||||
/// 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 @@ public:
|
||||
};
|
||||
|
||||
class ImplicitParamDecl : public VarDecl {
|
||||
virtual void anchor();
|
||||
public:
|
||||
static ImplicitParamDecl *Create(ASTContext &C, DeclContext *DC,
|
||||
SourceLocation IdLoc, IdentifierInfo *Id,
|
||||
@@ -2140,6 +2146,7 @@ public:
|
||||
/// 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 @@ public:
|
||||
/// 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 @@ public:
|
||||
|
||||
/// 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 @@ public:
|
||||
/// 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 @@ private:
|
||||
};
|
||||
|
||||
class FileScopeAsmDecl : public Decl {
|
||||
virtual void anchor();
|
||||
StringLiteral *AsmString;
|
||||
SourceLocation RParenLoc;
|
||||
FileScopeAsmDecl(DeclContext *DC, StringLiteral *asmstring,
|
||||
|
||||
@@ -104,6 +104,7 @@ namespace clang {
|
||||
/// 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 @@ public:
|
||||
/// 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 @@ protected:
|
||||
: 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 @@ public:
|
||||
/// };
|
||||
/// @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 @@ public:
|
||||
/// };
|
||||
/// @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 @@ public:
|
||||
/// };
|
||||
/// @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 @@ public:
|
||||
/// 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 @@ public:
|
||||
/// 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 @@ public:
|
||||
/// namespace Foo = Bar;
|
||||
/// @endcode
|
||||
class NamespaceAliasDecl : public NamedDecl {
|
||||
virtual void anchor();
|
||||
|
||||
/// \brief The location of the "namespace" keyword.
|
||||
SourceLocation NamespaceLoc;
|
||||
|
||||
@@ -2308,6 +2317,8 @@ public:
|
||||
/// }
|
||||
///
|
||||
class UsingShadowDecl : public NamedDecl {
|
||||
virtual void anchor();
|
||||
|
||||
/// The referenced declaration.
|
||||
NamedDecl *Underlying;
|
||||
|
||||
@@ -2367,6 +2378,8 @@ public:
|
||||
/// 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 @@ public:
|
||||
/// 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 @@ public:
|
||||
/// 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 @@ public:
|
||||
|
||||
/// StaticAssertDecl - Represents a C++0x static_assert declaration.
|
||||
class StaticAssertDecl : public Decl {
|
||||
virtual void anchor();
|
||||
Expr *AssertExpr;
|
||||
StringLiteral *Message;
|
||||
SourceLocation RParenLoc;
|
||||
|
||||
@@ -35,6 +35,7 @@ namespace clang {
|
||||
///
|
||||
/// 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;
|
||||
|
||||
|
||||
@@ -426,6 +426,8 @@ public:
|
||||
/// 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 @@ public:
|
||||
///
|
||||
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 @@ public:
|
||||
/// }
|
||||
///
|
||||
class ObjCIvarDecl : public FieldDecl {
|
||||
virtual void anchor();
|
||||
|
||||
public:
|
||||
enum AccessControl {
|
||||
None, Private, Protected, Public, Package
|
||||
@@ -1010,7 +1016,7 @@ private:
|
||||
/// 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 @@ public:
|
||||
/// id <NSDraggingInfo> anyObjectThatImplementsNSDraggingInfo;
|
||||
///
|
||||
class ObjCProtocolDecl : public ObjCContainerDecl {
|
||||
virtual void anchor();
|
||||
|
||||
/// Referenced protocols
|
||||
ObjCProtocolList ReferencedProtocols;
|
||||
|
||||
@@ -1173,6 +1181,8 @@ public:
|
||||
/// @protocol NSTextInput, NSChangeSpelling, NSDraggingInfo;
|
||||
///
|
||||
class ObjCForwardProtocolDecl : public Decl {
|
||||
virtual void anchor();
|
||||
|
||||
ObjCProtocolList ReferencedProtocols;
|
||||
|
||||
ObjCForwardProtocolDecl(DeclContext *DC, SourceLocation L,
|
||||
@@ -1232,6 +1242,8 @@ public:
|
||||
/// 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 @@ public:
|
||||
};
|
||||
|
||||
class ObjCImplDecl : public ObjCContainerDecl {
|
||||
virtual void anchor();
|
||||
|
||||
/// Class interface for this class/category implementation
|
||||
ObjCInterfaceDecl *ClassInterface;
|
||||
|
||||
@@ -1391,6 +1405,8 @@ public:
|
||||
///
|
||||
/// ObjCCategoryImplDecl
|
||||
class ObjCCategoryImplDecl : public ObjCImplDecl {
|
||||
virtual void anchor();
|
||||
|
||||
// Category name
|
||||
IdentifierInfo *Id;
|
||||
|
||||
@@ -1479,6 +1495,7 @@ raw_ostream &operator<<(raw_ostream &OS,
|
||||
/// 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 @@ raw_ostream &operator<<(raw_ostream &OS,
|
||||
/// 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 @@ public:
|
||||
/// @property (assign, readwrite) int MyProperty;
|
||||
///
|
||||
class ObjCPropertyDecl : public NamedDecl {
|
||||
virtual void anchor();
|
||||
public:
|
||||
enum PropertyAttributeKind {
|
||||
OBJC_PR_noattr = 0x00,
|
||||
|
||||
@@ -198,6 +198,7 @@ public:
|
||||
/// 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 @@ public:
|
||||
/// 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 @@ public:
|
||||
|
||||
class ClassTemplatePartialSpecializationDecl
|
||||
: public ClassTemplateSpecializationDecl {
|
||||
virtual void anchor();
|
||||
|
||||
/// \brief The list of template parameters
|
||||
TemplateParameterList* TemplateParams;
|
||||
|
||||
@@ -1941,6 +1945,7 @@ public:
|
||||
/// 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 @@ public:
|
||||
/// 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),
|
||||
|
||||
@@ -1643,6 +1643,8 @@ public:
|
||||
/// __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;
|
||||
|
||||
|
||||
@@ -64,6 +64,8 @@ private:
|
||||
/// MangleContext - Context for tracking state which persists across multiple
|
||||
/// calls to the C++ name mangler.
|
||||
class MangleContext {
|
||||
virtual void anchor();
|
||||
|
||||
ASTContext &Context;
|
||||
DiagnosticsEngine &Diags;
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ typedef llvm::DomTreeNodeBase<CFGBlock> DomTreeNode;
|
||||
/// 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 @@ private:
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -52,7 +52,9 @@ public:
|
||||
friend class LiveVariables;
|
||||
};
|
||||
|
||||
struct Observer {
|
||||
class Observer {
|
||||
virtual void anchor();
|
||||
public:
|
||||
virtual ~Observer() {}
|
||||
|
||||
/// A callback invoked right before invoking the
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
namespace clang {
|
||||
|
||||
class PostOrderCFGView : public ManagedAnalysis {
|
||||
virtual void anchor();
|
||||
public:
|
||||
/// \brief Implements a set of CFGBlocks using a BitVector.
|
||||
///
|
||||
|
||||
@@ -37,6 +37,7 @@ namespace clang {
|
||||
namespace reachable_code {
|
||||
|
||||
class Callback {
|
||||
virtual void anchor();
|
||||
public:
|
||||
virtual ~Callback() {}
|
||||
virtual void HandleUnreachable(SourceLocation L, SourceRange R1,
|
||||
|
||||
@@ -1118,6 +1118,7 @@ public:
|
||||
/// 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.
|
||||
|
||||
@@ -25,6 +25,7 @@ namespace clang {
|
||||
/// system calls, which is used by precompiled and pretokenized headers to
|
||||
/// improve performance.
|
||||
class FileSystemStatCache {
|
||||
virtual void anchor();
|
||||
protected:
|
||||
llvm::OwningPtr<FileSystemStatCache> NextStatCache;
|
||||
|
||||
|
||||
@@ -63,31 +63,37 @@ public:
|
||||
};
|
||||
|
||||
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);
|
||||
};
|
||||
|
||||
@@ -28,6 +28,7 @@ namespace clang {
|
||||
class CodeGenOptions;
|
||||
|
||||
class CodeGenerator : public ASTConsumer {
|
||||
virtual void anchor();
|
||||
public:
|
||||
virtual llvm::Module* GetModule() = 0;
|
||||
virtual llvm::Module* ReleaseModule() = 0;
|
||||
|
||||
@@ -94,6 +94,7 @@ public:
|
||||
};
|
||||
|
||||
class InputAction : public Action {
|
||||
virtual void anchor();
|
||||
const Arg &Input;
|
||||
public:
|
||||
InputAction(const Arg &_Input, types::ID _Type);
|
||||
@@ -107,6 +108,7 @@ public:
|
||||
};
|
||||
|
||||
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 @@ public:
|
||||
};
|
||||
|
||||
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 @@ public:
|
||||
};
|
||||
|
||||
class PreprocessJobAction : public JobAction {
|
||||
virtual void anchor();
|
||||
public:
|
||||
PreprocessJobAction(Action *Input, types::ID OutputType);
|
||||
|
||||
@@ -146,6 +150,7 @@ public:
|
||||
};
|
||||
|
||||
class PrecompileJobAction : public JobAction {
|
||||
virtual void anchor();
|
||||
public:
|
||||
PrecompileJobAction(Action *Input, types::ID OutputType);
|
||||
|
||||
@@ -156,6 +161,7 @@ public:
|
||||
};
|
||||
|
||||
class AnalyzeJobAction : public JobAction {
|
||||
virtual void anchor();
|
||||
public:
|
||||
AnalyzeJobAction(Action *Input, types::ID OutputType);
|
||||
|
||||
@@ -166,6 +172,7 @@ public:
|
||||
};
|
||||
|
||||
class CompileJobAction : public JobAction {
|
||||
virtual void anchor();
|
||||
public:
|
||||
CompileJobAction(Action *Input, types::ID OutputType);
|
||||
|
||||
@@ -176,6 +183,7 @@ public:
|
||||
};
|
||||
|
||||
class AssembleJobAction : public JobAction {
|
||||
virtual void anchor();
|
||||
public:
|
||||
AssembleJobAction(Action *Input, types::ID OutputType);
|
||||
|
||||
@@ -186,6 +194,7 @@ public:
|
||||
};
|
||||
|
||||
class LinkJobAction : public JobAction {
|
||||
virtual void anchor();
|
||||
public:
|
||||
LinkJobAction(ActionList &Inputs, types::ID Type);
|
||||
|
||||
@@ -196,6 +205,7 @@ public:
|
||||
};
|
||||
|
||||
class LipoJobAction : public JobAction {
|
||||
virtual void anchor();
|
||||
public:
|
||||
LipoJobAction(ActionList &Inputs, types::ID Type);
|
||||
|
||||
@@ -206,6 +216,7 @@ public:
|
||||
};
|
||||
|
||||
class DsymutilJobAction : public JobAction {
|
||||
virtual void anchor();
|
||||
public:
|
||||
DsymutilJobAction(ActionList &Inputs, types::ID Type);
|
||||
|
||||
@@ -216,6 +227,7 @@ public:
|
||||
};
|
||||
|
||||
class VerifyJobAction : public JobAction {
|
||||
virtual void anchor();
|
||||
public:
|
||||
VerifyJobAction(ActionList &Inputs, types::ID Type);
|
||||
static bool classof(const Action *A) {
|
||||
|
||||
@@ -46,6 +46,8 @@ public:
|
||||
/// 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;
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ class LangOptions;
|
||||
/// 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;
|
||||
|
||||
|
||||
@@ -231,6 +231,7 @@ public:
|
||||
};
|
||||
|
||||
class PluginASTAction : public ASTFrontendAction {
|
||||
virtual void anchor();
|
||||
protected:
|
||||
virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
|
||||
StringRef InFile) = 0;
|
||||
|
||||
@@ -44,6 +44,8 @@ enum ConflictMarkerKind {
|
||||
/// 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.
|
||||
|
||||
@@ -224,6 +224,7 @@ public:
|
||||
|
||||
/// PPChainedCallbacks - Simple wrapper class for chaining callbacks.
|
||||
class PPChainedCallbacks : public PPCallbacks {
|
||||
virtual void anchor();
|
||||
PPCallbacks *First, *Second;
|
||||
|
||||
public:
|
||||
|
||||
@@ -24,6 +24,7 @@ class FileEntry;
|
||||
class Preprocessor;
|
||||
|
||||
class PreprocessorLexer {
|
||||
virtual void anchor();
|
||||
protected:
|
||||
Preprocessor *PP; // Preprocessor object controlling lexing.
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ namespace clang {
|
||||
/// 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;
|
||||
|
||||
@@ -52,6 +52,7 @@ class BugType;
|
||||
class BugReport {
|
||||
public:
|
||||
class NodeResolver {
|
||||
virtual void anchor();
|
||||
public:
|
||||
virtual ~NodeResolver() {}
|
||||
virtual const ExplodedNode*
|
||||
@@ -374,6 +375,7 @@ public:
|
||||
};
|
||||
|
||||
class BugReporterContext {
|
||||
virtual void anchor();
|
||||
GRBugReporter &BR;
|
||||
public:
|
||||
BugReporterContext(GRBugReporter& br) : BR(br) {}
|
||||
|
||||
@@ -49,6 +49,7 @@ public:
|
||||
};
|
||||
|
||||
class BuiltinBug : public BugType {
|
||||
virtual void anchor();
|
||||
const std::string desc;
|
||||
public:
|
||||
BuiltinBug(const char *name, const char *description)
|
||||
|
||||
@@ -46,6 +46,7 @@ class ExplodedNode;
|
||||
class PathDiagnostic;
|
||||
|
||||
class PathDiagnosticConsumer {
|
||||
virtual void anchor();
|
||||
public:
|
||||
PathDiagnosticConsumer() {}
|
||||
|
||||
|
||||
@@ -383,6 +383,7 @@ class Checker<check::_VoidCheck, check::_VoidCheck, check::_VoidCheck,
|
||||
check::_VoidCheck, check::_VoidCheck, check::_VoidCheck>
|
||||
: public CheckerBase
|
||||
{
|
||||
virtual void anchor();
|
||||
public:
|
||||
static void _register(void *checker, CheckerManager &mgr) { }
|
||||
};
|
||||
|
||||
@@ -31,6 +31,7 @@ namespace ento {
|
||||
class CheckerManager;
|
||||
|
||||
class AnalysisManager : public BugReporterData {
|
||||
virtual void anchor();
|
||||
AnalysisDeclContextManager AnaCtxMgr;
|
||||
|
||||
ASTContext &Ctx;
|
||||
|
||||
@@ -211,6 +211,7 @@ struct NodeBuilderContext {
|
||||
/// 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 @@ public:
|
||||
/// \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 @@ public:
|
||||
/// \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;
|
||||
|
||||
|
||||
@@ -228,6 +228,7 @@ private:
|
||||
|
||||
// FIXME: Is this class necessary?
|
||||
class InterExplodedGraphMap {
|
||||
virtual void anchor();
|
||||
llvm::DenseMap<const ExplodedNode*, ExplodedNode*> M;
|
||||
friend class ExplodedGraph;
|
||||
|
||||
|
||||
@@ -177,6 +177,7 @@ public:
|
||||
};
|
||||
|
||||
class GlobalsSpaceRegion : public MemSpaceRegion {
|
||||
virtual void anchor();
|
||||
protected:
|
||||
GlobalsSpaceRegion(MemRegionManager *mgr, Kind k)
|
||||
: MemSpaceRegion(mgr, k) {}
|
||||
@@ -223,6 +224,7 @@ public:
|
||||
};
|
||||
|
||||
class HeapSpaceRegion : public MemSpaceRegion {
|
||||
virtual void anchor();
|
||||
friend class MemRegionManager;
|
||||
|
||||
HeapSpaceRegion(MemRegionManager *mgr)
|
||||
@@ -234,6 +236,7 @@ public:
|
||||
};
|
||||
|
||||
class UnknownSpaceRegion : public MemSpaceRegion {
|
||||
virtual void anchor();
|
||||
friend class MemRegionManager;
|
||||
UnknownSpaceRegion(MemRegionManager *mgr)
|
||||
: MemSpaceRegion(mgr, UnknownSpaceRegionKind) {}
|
||||
@@ -266,7 +269,7 @@ public:
|
||||
};
|
||||
|
||||
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 @@ public:
|
||||
|
||||
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 @@ public:
|
||||
/// 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 @@ public:
|
||||
|
||||
/// 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 @@ public:
|
||||
|
||||
/// 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 @@ public:
|
||||
|
||||
|
||||
class CodeTextRegion : public TypedRegion {
|
||||
public:
|
||||
virtual void anchor();
|
||||
protected:
|
||||
CodeTextRegion(const MemRegion *sreg, Kind k) : TypedRegion(sreg, k) {}
|
||||
public:
|
||||
|
||||
@@ -806,6 +806,7 @@ CB ProgramState::scanReachableSymbols(const MemRegion * const *beg,
|
||||
/// 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;
|
||||
|
||||
@@ -28,6 +28,7 @@ namespace ento {
|
||||
class ProgramState;
|
||||
|
||||
class SValBuilder {
|
||||
virtual void anchor();
|
||||
protected:
|
||||
ASTContext &Context;
|
||||
|
||||
|
||||
@@ -258,10 +258,12 @@ inline StoreRef &StoreRef::operator=(StoreRef const &newStore) {
|
||||
/// 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;
|
||||
|
||||
@@ -43,6 +43,7 @@ class NodeBuilderWithSinks;
|
||||
class MemRegion;
|
||||
|
||||
class SubEngine {
|
||||
virtual void anchor();
|
||||
public:
|
||||
virtual ~SubEngine() {}
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ namespace ento {
|
||||
/// \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 @@ typedef unsigned SymbolID;
|
||||
/// \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:
|
||||
|
||||
@@ -19,4 +19,8 @@ using namespace clang;
|
||||
|
||||
Attr::~Attr() { }
|
||||
|
||||
void InheritableAttr::anchor() { }
|
||||
|
||||
void InheritableParamAttr::anchor() { }
|
||||
|
||||
#include "clang/AST/AttrImpl.inc"
|
||||
|
||||
@@ -624,6 +624,8 @@ static void clearLinkageForClass(const CXXRecordDecl *record) {
|
||||
}
|
||||
}
|
||||
|
||||
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 @@ void TagDecl::setTemplateParameterListsInfo(ASTContext &Context,
|
||||
// EnumDecl Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void EnumDecl::anchor() { }
|
||||
|
||||
EnumDecl *EnumDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
SourceLocation StartLoc, SourceLocation IdLoc,
|
||||
IdentifierInfo *Id,
|
||||
@@ -2587,10 +2591,14 @@ SourceRange BlockDecl::getSourceRange() const {
|
||||
// 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 @@ LabelDecl *LabelDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
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 @@ NamespaceDecl *NamespaceDecl::getNextNamespace() {
|
||||
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 @@ EnumConstantDecl *EnumConstantDecl::Create(ASTContext &C, EnumDecl *CD,
|
||||
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 @@ SourceRange EnumConstantDecl::getSourceRange() const {
|
||||
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 @@ SourceRange TypeAliasDecl::getSourceRange() const {
|
||||
return SourceRange(getLocStart(), RangeEnd);
|
||||
}
|
||||
|
||||
void FileScopeAsmDecl::anchor() { }
|
||||
|
||||
FileScopeAsmDecl *FileScopeAsmDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
StringLiteral *Str,
|
||||
SourceLocation AsmLoc,
|
||||
|
||||
@@ -28,6 +28,8 @@ using namespace clang;
|
||||
// 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 @@ bool CXXRecordDecl::mayBeAbstract() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
void CXXMethodDecl::anchor() { }
|
||||
|
||||
CXXMethodDecl *
|
||||
CXXMethodDecl::Create(ASTContext &C, CXXRecordDecl *RD,
|
||||
SourceLocation StartLoc,
|
||||
@@ -1404,6 +1408,8 @@ SourceRange CXXCtorInitializer::getSourceRange() const {
|
||||
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 @@ CXXConstructorDecl::setInheritedConstructor(const CXXConstructorDecl *BaseCtor){
|
||||
addOverriddenMethod(BaseCtor);
|
||||
}
|
||||
|
||||
void CXXDestructorDecl::anchor() { }
|
||||
|
||||
CXXDestructorDecl *
|
||||
CXXDestructorDecl::Create(ASTContext &C, EmptyShell Empty) {
|
||||
return new (C) CXXDestructorDecl(0, SourceLocation(), DeclarationNameInfo(),
|
||||
@@ -1567,6 +1575,8 @@ CXXDestructorDecl::Create(ASTContext &C, CXXRecordDecl *RD,
|
||||
isImplicitlyDeclared);
|
||||
}
|
||||
|
||||
void CXXConversionDecl::anchor() { }
|
||||
|
||||
CXXConversionDecl *
|
||||
CXXConversionDecl::Create(ASTContext &C, EmptyShell Empty) {
|
||||
return new (C) CXXConversionDecl(0, SourceLocation(), DeclarationNameInfo(),
|
||||
@@ -1589,6 +1599,8 @@ CXXConversionDecl::Create(ASTContext &C, CXXRecordDecl *RD,
|
||||
EndLocation);
|
||||
}
|
||||
|
||||
void LinkageSpecDecl::anchor() { }
|
||||
|
||||
LinkageSpecDecl *LinkageSpecDecl::Create(ASTContext &C,
|
||||
DeclContext *DC,
|
||||
SourceLocation ExternLoc,
|
||||
@@ -1598,6 +1610,8 @@ LinkageSpecDecl *LinkageSpecDecl::Create(ASTContext &C,
|
||||
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 @@ NamespaceDecl *UsingDirectiveDecl::getNominatedNamespace() {
|
||||
return cast_or_null<NamespaceDecl>(NominatedNamespace);
|
||||
}
|
||||
|
||||
void NamespaceAliasDecl::anchor() { }
|
||||
|
||||
NamespaceAliasDecl *NamespaceAliasDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
SourceLocation UsingLoc,
|
||||
SourceLocation AliasLoc,
|
||||
@@ -1631,6 +1647,8 @@ NamespaceAliasDecl *NamespaceAliasDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
QualifierLoc, IdentLoc, Namespace);
|
||||
}
|
||||
|
||||
void UsingShadowDecl::anchor() { }
|
||||
|
||||
UsingDecl *UsingShadowDecl::getUsingDecl() const {
|
||||
const UsingShadowDecl *Shadow = this;
|
||||
while (const UsingShadowDecl *NextShadow =
|
||||
@@ -1639,6 +1657,8 @@ UsingDecl *UsingShadowDecl::getUsingDecl() const {
|
||||
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 @@ UsingDecl *UsingDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation UL,
|
||||
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 @@ UnresolvedUsingValueDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
QualifierLoc, NameInfo);
|
||||
}
|
||||
|
||||
void UnresolvedUsingTypenameDecl::anchor() { }
|
||||
|
||||
UnresolvedUsingTypenameDecl *
|
||||
UnresolvedUsingTypenameDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
SourceLocation UsingLoc,
|
||||
@@ -1697,6 +1721,8 @@ UnresolvedUsingTypenameDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
TargetName.getAsIdentifierInfo());
|
||||
}
|
||||
|
||||
void StaticAssertDecl::anchor() { }
|
||||
|
||||
StaticAssertDecl *StaticAssertDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
SourceLocation StaticAssertLoc,
|
||||
Expr *AssertExpr,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -46,6 +46,8 @@ void ObjCProtocolList::set(ObjCProtocolDecl* const* InList, unsigned Elts,
|
||||
// ObjCInterfaceDecl
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void ObjCContainerDecl::anchor() { }
|
||||
|
||||
/// getIvarDecl - This method looks up an ivar in this ContextDecl.
|
||||
///
|
||||
ObjCIvarDecl *
|
||||
@@ -147,6 +149,8 @@ ObjCContainerDecl::FindPropertyDeclaration(IdentifierInfo *PropertyId) const {
|
||||
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 @@ bool ObjCInterfaceDecl::ClassImplementsProtocol(ObjCProtocolDecl *lProto,
|
||||
// ObjCIvarDecl
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void ObjCIvarDecl::anchor() { }
|
||||
|
||||
ObjCIvarDecl *ObjCIvarDecl::Create(ASTContext &C, ObjCContainerDecl *DC,
|
||||
SourceLocation StartLoc,
|
||||
SourceLocation IdLoc, IdentifierInfo *Id,
|
||||
@@ -946,6 +952,8 @@ const ObjCInterfaceDecl *ObjCIvarDecl::getContainingInterface() const {
|
||||
// ObjCAtDefsFieldDecl
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void ObjCAtDefsFieldDecl::anchor() { }
|
||||
|
||||
ObjCAtDefsFieldDecl
|
||||
*ObjCAtDefsFieldDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
SourceLocation StartLoc, SourceLocation IdLoc,
|
||||
@@ -957,6 +965,8 @@ ObjCAtDefsFieldDecl
|
||||
// ObjCProtocolDecl
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void ObjCProtocolDecl::anchor() { }
|
||||
|
||||
ObjCProtocolDecl *ObjCProtocolDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
IdentifierInfo *Id,
|
||||
SourceLocation nameLoc,
|
||||
@@ -1026,6 +1036,8 @@ SourceRange ObjCClassDecl::getSourceRange() const {
|
||||
// ObjCForwardProtocolDecl
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void ObjCForwardProtocolDecl::anchor() { }
|
||||
|
||||
ObjCForwardProtocolDecl::
|
||||
ObjCForwardProtocolDecl(DeclContext *DC, SourceLocation L,
|
||||
ObjCProtocolDecl *const *Elts, unsigned nElts,
|
||||
@@ -1048,6 +1060,8 @@ ObjCForwardProtocolDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
// ObjCCategoryDecl
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void ObjCCategoryDecl::anchor() { }
|
||||
|
||||
ObjCCategoryDecl *ObjCCategoryDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
SourceLocation AtLoc,
|
||||
SourceLocation ClassNameLoc,
|
||||
@@ -1089,6 +1103,8 @@ void ObjCCategoryDecl::setImplementation(ObjCCategoryImplDecl *ImplD) {
|
||||
// ObjCCategoryImplDecl
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void ObjCCategoryImplDecl::anchor() { }
|
||||
|
||||
ObjCCategoryImplDecl *
|
||||
ObjCCategoryImplDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
IdentifierInfo *Id,
|
||||
@@ -1108,6 +1124,8 @@ ObjCCategoryDecl *ObjCCategoryImplDecl::getCategoryDecl() const {
|
||||
}
|
||||
|
||||
|
||||
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 @@ raw_ostream &clang::operator<<(raw_ostream &OS,
|
||||
// ObjCImplementationDecl
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void ObjCImplementationDecl::anchor() { }
|
||||
|
||||
ObjCImplementationDecl *
|
||||
ObjCImplementationDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
ObjCInterfaceDecl *ClassInterface,
|
||||
@@ -1203,6 +1223,8 @@ raw_ostream &clang::operator<<(raw_ostream &OS,
|
||||
// ObjCCompatibleAliasDecl
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void ObjCCompatibleAliasDecl::anchor() { }
|
||||
|
||||
ObjCCompatibleAliasDecl *
|
||||
ObjCCompatibleAliasDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
SourceLocation L,
|
||||
@@ -1215,6 +1237,8 @@ ObjCCompatibleAliasDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
// ObjCPropertyDecl
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void ObjCPropertyDecl::anchor() { }
|
||||
|
||||
ObjCPropertyDecl *ObjCPropertyDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
SourceLocation L,
|
||||
IdentifierInfo *Id,
|
||||
|
||||
@@ -537,6 +537,8 @@ SourceLocation NonTypeTemplateParmDecl::getDefaultArgumentLoc() const {
|
||||
// TemplateTemplateParmDecl Method Implementations
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void TemplateTemplateParmDecl::anchor() { }
|
||||
|
||||
TemplateTemplateParmDecl *
|
||||
TemplateTemplateParmDecl::Create(const ASTContext &C, DeclContext *DC,
|
||||
SourceLocation L, unsigned D, unsigned P,
|
||||
@@ -581,6 +583,12 @@ FunctionTemplateSpecializationInfo::Create(ASTContext &C, FunctionDecl *FD,
|
||||
POI);
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// TemplateDecl Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void TemplateDecl::anchor() { }
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// ClassTemplateSpecializationDecl Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
@@ -682,6 +690,8 @@ ClassTemplateSpecializationDecl::getSourceRange() const {
|
||||
//===----------------------------------------------------------------------===//
|
||||
// ClassTemplatePartialSpecializationDecl Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
void ClassTemplatePartialSpecializationDecl::anchor() { }
|
||||
|
||||
ClassTemplatePartialSpecializationDecl::
|
||||
ClassTemplatePartialSpecializationDecl(ASTContext &Context, TagKind TK,
|
||||
DeclContext *DC,
|
||||
@@ -749,6 +759,8 @@ ClassTemplatePartialSpecializationDecl::Create(ASTContext &Context,
|
||||
// FriendTemplateDecl Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void FriendTemplateDecl::anchor() { }
|
||||
|
||||
FriendTemplateDecl *FriendTemplateDecl::Create(ASTContext &Context,
|
||||
DeclContext *DC,
|
||||
SourceLocation L,
|
||||
@@ -796,3 +808,8 @@ TypeAliasTemplateDecl::newCommon(ASTContext &C) {
|
||||
return CommonPtr;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// ClassScopeFunctionSpecializationDecl Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void ClassScopeFunctionSpecializationDecl::anchor() { }
|
||||
|
||||
@@ -1023,4 +1023,4 @@ TemplateArgument SubstNonTypeTemplateParmPackExpr::getArgumentPack() const {
|
||||
return TemplateArgument(Arguments, NumArguments);
|
||||
}
|
||||
|
||||
|
||||
void ArrayTypeTraitExpr::anchor() { }
|
||||
|
||||
@@ -59,6 +59,8 @@ static void checkMangleDC(const DeclContext *DC, const BlockDecl *BD) {
|
||||
|
||||
}
|
||||
|
||||
void MangleContext::anchor() { }
|
||||
|
||||
void MangleContext::mangleGlobalBlock(const BlockDecl *BD,
|
||||
raw_ostream &Out) {
|
||||
Out << "__block_global_" << getBlockId(BD, false);
|
||||
|
||||
14
clang/lib/Analysis/Dominators.cpp
Normal file
14
clang/lib/Analysis/Dominators.cpp
Normal file
@@ -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() { }
|
||||
@@ -143,6 +143,8 @@ namespace {
|
||||
}
|
||||
}
|
||||
|
||||
void LiveVariables::Observer::anchor() { }
|
||||
|
||||
LiveVariables::LivenessValues
|
||||
LiveVariablesImpl::merge(LiveVariables::LivenessValues valsA,
|
||||
LiveVariables::LivenessValues valsB) {
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
|
||||
using namespace clang;
|
||||
|
||||
void PostOrderCFGView::anchor() { }
|
||||
|
||||
PostOrderCFGView::PostOrderCFGView(const CFG *cfg) {
|
||||
Blocks.reserve(cfg->getNumBlockIDs());
|
||||
CFGBlockSet BSet(cfg);
|
||||
|
||||
@@ -251,7 +251,9 @@ void DeadCodeScan::reportDeadCode(const Stmt *S,
|
||||
}
|
||||
|
||||
namespace clang { namespace reachable_code {
|
||||
|
||||
|
||||
void Callback::anchor() { }
|
||||
|
||||
unsigned ScanReachableFromBlock(const CFGBlock *Start,
|
||||
llvm::BitVector &Reachable) {
|
||||
unsigned count = 0;
|
||||
|
||||
@@ -825,6 +825,8 @@ StoredDiagnostic::~StoredDiagnostic() { }
|
||||
/// 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;
|
||||
|
||||
@@ -28,6 +28,8 @@ using namespace clang;
|
||||
#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.
|
||||
|
||||
@@ -33,6 +33,7 @@ using namespace llvm;
|
||||
|
||||
namespace clang {
|
||||
class BackendConsumer : public ASTConsumer {
|
||||
virtual void anchor();
|
||||
DiagnosticsEngine &Diags;
|
||||
BackendAction Action;
|
||||
const CodeGenOptions &CodeGenOpts;
|
||||
@@ -180,6 +181,8 @@ namespace clang {
|
||||
void InlineAsmDiagHandler2(const llvm::SMDiagnostic &,
|
||||
SourceLocation LocCookie);
|
||||
};
|
||||
|
||||
void BackendConsumer::anchor() {}
|
||||
}
|
||||
|
||||
/// ConvertBackendLocation - Convert a location in a temporary llvm::SourceMgr
|
||||
@@ -406,20 +409,26 @@ void CodeGenAction::ExecuteAction() {
|
||||
|
||||
//
|
||||
|
||||
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) {}
|
||||
|
||||
@@ -113,6 +113,8 @@ namespace {
|
||||
};
|
||||
}
|
||||
|
||||
void CodeGenerator::anchor() { }
|
||||
|
||||
CodeGenerator *clang::CreateLLVMCodeGen(DiagnosticsEngine &Diags,
|
||||
const std::string& ModuleName,
|
||||
const CodeGenOptions &CGO,
|
||||
|
||||
@@ -38,14 +38,20 @@ const char *Action::getClassName(ActionClass AC) {
|
||||
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 @@ JobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type)
|
||||
: 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) {
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@ using namespace clang::driver;
|
||||
|
||||
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),
|
||||
|
||||
@@ -192,6 +192,8 @@ std::string Darwin::ComputeEffectiveClangTriple(const ArgList &Args,
|
||||
return Triple.getTriple();
|
||||
}
|
||||
|
||||
void Generic_ELF::anchor() {}
|
||||
|
||||
Tool &Darwin::SelectTool(const Compilation &C, const JobAction &JA,
|
||||
const ActionList &Inputs) const {
|
||||
Action::ActionClass Key;
|
||||
|
||||
@@ -423,7 +423,8 @@ public:
|
||||
};
|
||||
|
||||
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) {}
|
||||
|
||||
|
||||
@@ -2865,6 +2865,8 @@ const char *darwin::CC1::getCC1Name(types::ID Type) const {
|
||||
}
|
||||
}
|
||||
|
||||
void darwin::CC1::anchor() {}
|
||||
|
||||
const char *darwin::CC1::getBaseInputName(const ArgList &Args,
|
||||
const InputInfoList &Inputs) {
|
||||
return Args.MakeArgString(
|
||||
@@ -3509,6 +3511,8 @@ void darwin::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
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);
|
||||
|
||||
@@ -192,6 +192,7 @@ namespace hexagon {
|
||||
|
||||
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 @@ namespace darwin {
|
||||
};
|
||||
|
||||
class LLVM_LIBRARY_VISIBILITY CC1 : public DarwinTool {
|
||||
virtual void anchor();
|
||||
public:
|
||||
static const char *getBaseInputName(const ArgList &Args,
|
||||
const InputInfoList &Input);
|
||||
|
||||
14
clang/lib/Frontend/ChainedDiagnosticConsumer.cpp
Normal file
14
clang/lib/Frontend/ChainedDiagnosticConsumer.cpp
Normal file
@@ -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() { }
|
||||
@@ -411,6 +411,8 @@ void ASTFrontendAction::ExecuteAction() {
|
||||
ParseAST(CI.getSema(), CI.getFrontendOpts().ShowStats);
|
||||
}
|
||||
|
||||
void PluginASTAction::anchor() { }
|
||||
|
||||
ASTConsumer *
|
||||
PreprocessorFrontendAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
StringRef InFile) {
|
||||
|
||||
@@ -59,6 +59,8 @@ tok::ObjCKeywordKind Token::getObjCKeywordID() const {
|
||||
// Lexer Class Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void Lexer::anchor() { }
|
||||
|
||||
void Lexer::InitLexer(const char *BufStart, const char *BufPtr,
|
||||
const char *BufEnd) {
|
||||
InitCharacterInfo();
|
||||
|
||||
14
clang/lib/Lex/PPCallbacks.cpp
Normal file
14
clang/lib/Lex/PPCallbacks.cpp
Normal file
@@ -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() { }
|
||||
@@ -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),
|
||||
|
||||
@@ -284,6 +284,9 @@ Decl *Parser::ParseObjCAtInterfaceDeclaration(SourceLocation AtLoc,
|
||||
/// 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 @@ struct Parser::ObjCPropertyCallback : FieldCallback {
|
||||
}
|
||||
};
|
||||
|
||||
void Parser::ObjCPropertyCallback::anchor() {
|
||||
}
|
||||
|
||||
/// objc-interface-decl-list:
|
||||
/// empty
|
||||
/// objc-interface-decl-list objc-property-decl [OBJC2]
|
||||
|
||||
@@ -634,6 +634,7 @@ struct SortDiagBySourceLocation {
|
||||
}
|
||||
};
|
||||
|
||||
namespace {
|
||||
class ThreadSafetyReporter : public clang::thread_safety::ThreadSafetyHandler {
|
||||
Sema &S;
|
||||
DiagList Warnings;
|
||||
@@ -744,6 +745,7 @@ class ThreadSafetyReporter : public clang::thread_safety::ThreadSafetyHandler {
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// AnalysisBasedWarnings - Worker object used by Sema to execute analysis-based
|
||||
|
||||
14
clang/lib/Sema/SemaConsumer.cpp
Normal file
14
clang/lib/Sema/SemaConsumer.cpp
Normal file
@@ -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() { }
|
||||
@@ -14,6 +14,8 @@
|
||||
using namespace clang;
|
||||
using namespace ento;
|
||||
|
||||
void AnalysisManager::anchor() { }
|
||||
|
||||
AnalysisManager::AnalysisManager(ASTContext &ctx, DiagnosticsEngine &diags,
|
||||
const LangOptions &lang,
|
||||
PathDiagnosticConsumer *pd,
|
||||
|
||||
@@ -34,6 +34,8 @@ using namespace ento;
|
||||
|
||||
BugReporterVisitor::~BugReporterVisitor() {}
|
||||
|
||||
void BugReporterContext::anchor() {}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Helper routines for walking the ExplodedGraph and fetching statements.
|
||||
//===----------------------------------------------------------------------===//
|
||||
@@ -1204,10 +1206,14 @@ BugType::~BugType() { }
|
||||
|
||||
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;
|
||||
|
||||
@@ -20,3 +20,11 @@ StringRef CheckerBase::getTagDescription() const {
|
||||
// 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() { }
|
||||
|
||||
@@ -537,6 +537,8 @@ void CoreEngine::enqueueEndOfFunction(ExplodedNodeSet &Set) {
|
||||
}
|
||||
|
||||
|
||||
void NodeBuilder::anchor() { }
|
||||
|
||||
ExplodedNode* NodeBuilder::generateNodeImpl(const ProgramPoint &Loc,
|
||||
const ProgramState *State,
|
||||
ExplodedNode *FromN,
|
||||
@@ -556,6 +558,8 @@ ExplodedNode* NodeBuilder::generateNodeImpl(const ProgramPoint &Loc,
|
||||
return N;
|
||||
}
|
||||
|
||||
void NodeBuilderWithSinks::anchor() { }
|
||||
|
||||
StmtNodeBuilder::~StmtNodeBuilder() {
|
||||
if (EnclosingBldr)
|
||||
for (ExplodedNodeSet::iterator I = Frontier.begin(),
|
||||
@@ -563,6 +567,8 @@ StmtNodeBuilder::~StmtNodeBuilder() {
|
||||
EnclosingBldr->addNodes(*I);
|
||||
}
|
||||
|
||||
void BranchNodeBuilder::anchor() { }
|
||||
|
||||
ExplodedNode *BranchNodeBuilder::generateNode(const ProgramState *State,
|
||||
bool branch,
|
||||
ExplodedNode *NodePred) {
|
||||
|
||||
@@ -379,6 +379,8 @@ ExplodedGraph::TrimInternal(const ExplodedNode* const* BeginSources,
|
||||
return G;
|
||||
}
|
||||
|
||||
void InterExplodedGraphMap::anchor() { }
|
||||
|
||||
ExplodedNode*
|
||||
InterExplodedGraphMap::getMappedNode(const ExplodedNode *N) const {
|
||||
llvm::DenseMap<const ExplodedNode*, ExplodedNode*>::const_iterator I =
|
||||
|
||||
@@ -383,6 +383,20 @@ void CXXBaseObjectRegion::Profile(llvm::FoldingSetNodeID &ID) const {
|
||||
ProfileRegion(ID, decl, superRegion);
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// 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.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
@@ -82,6 +82,8 @@ PathDiagnostic::PathDiagnostic(StringRef bugtype, StringRef desc,
|
||||
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
|
||||
|
||||
@@ -536,6 +536,8 @@ const ProgramState *ProgramStateManager::removeGDM(const ProgramState *state, vo
|
||||
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))
|
||||
|
||||
@@ -25,6 +25,8 @@ using namespace ento;
|
||||
// Basic SVal creation.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void SValBuilder::anchor() { }
|
||||
|
||||
DefinedOrUnknownSVal SValBuilder::makeZeroVal(QualType type) {
|
||||
if (Loc::isLocType(type))
|
||||
return makeNull();
|
||||
|
||||
@@ -331,3 +331,5 @@ SVal StoreManager::getLValueElement(QualType elementType, NonLoc Offset,
|
||||
|
||||
StoreManager::BindingsHandler::~BindingsHandler() {}
|
||||
|
||||
void SubRegionMap::anchor() { }
|
||||
void SubRegionMap::Visitor::anchor() { }
|
||||
|
||||
14
clang/lib/StaticAnalyzer/Core/SubEngine.cpp
Normal file
14
clang/lib/StaticAnalyzer/Core/SubEngine.cpp
Normal file
@@ -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() { }
|
||||
@@ -21,6 +21,8 @@
|
||||
using namespace clang;
|
||||
using namespace ento;
|
||||
|
||||
void SymExpr::anchor() { }
|
||||
|
||||
void SymExpr::dump() const {
|
||||
dumpToStream(llvm::errs());
|
||||
}
|
||||
@@ -99,6 +101,8 @@ void SymbolMetadata::dumpToStream(raw_ostream &os) const {
|
||||
<< getRegion() << ',' << T.getAsString() << '}';
|
||||
}
|
||||
|
||||
void SymbolData::anchor() { }
|
||||
|
||||
void SymbolRegionValue::dumpToStream(raw_ostream &os) const {
|
||||
os << "reg_$" << getSymbolID() << "<" << R << ">";
|
||||
}
|
||||
|
||||
@@ -96,7 +96,6 @@ namespace {
|
||||
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 @@ public:
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
sys::PrintStackTraceOnErrorSignal();
|
||||
|
||||
Reference in New Issue
Block a user