git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146960 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Blaikie 2011-12-20 02:50:00 +00:00
parent 1885687462
commit 2d24e2a396
151 changed files with 742 additions and 121 deletions

View File

@ -65,6 +65,7 @@ namespace llvm {
//===----------------------------------------------------------------------===//
class RefCountedBaseVPTR {
mutable unsigned ref_cnt;
virtual void anchor();
protected:
RefCountedBaseVPTR() : ref_cnt(0) {}

View File

@ -153,6 +153,7 @@ namespace llvm {
/// DIScope - A base class for various scopes.
class DIScope : public DIDescriptor {
virtual void anchor();
public:
explicit DIScope(const MDNode *N = 0) : DIDescriptor (N) {}
virtual ~DIScope() {}
@ -163,6 +164,7 @@ namespace llvm {
/// DICompileUnit - A wrapper for a compile unit.
class DICompileUnit : public DIScope {
virtual void anchor();
public:
explicit DICompileUnit(const MDNode *N = 0) : DIScope(N) {}
@ -202,6 +204,7 @@ namespace llvm {
/// DIFile - This is a wrapper for a file.
class DIFile : public DIScope {
virtual void anchor();
public:
explicit DIFile(const MDNode *N = 0) : DIScope(N) {
if (DbgNode && !isFile())
@ -230,7 +233,7 @@ namespace llvm {
/// FIXME: Types should be factored much better so that CV qualifiers and
/// others do not require a huge and empty descriptor full of zeros.
class DIType : public DIScope {
public:
virtual void anchor();
protected:
// This ctor is used when the Tag has already been validated by a derived
// ctor.
@ -240,7 +243,6 @@ namespace llvm {
/// Verify - Verify that a type descriptor is well formed.
bool Verify() const;
public:
explicit DIType(const MDNode *N);
explicit DIType() {}
virtual ~DIType() {}
@ -320,6 +322,7 @@ namespace llvm {
/// DIBasicType - A basic type, like 'int' or 'float'.
class DIBasicType : public DIType {
virtual void anchor();
public:
explicit DIBasicType(const MDNode *N = 0) : DIType(N) {}
@ -338,6 +341,7 @@ namespace llvm {
/// DIDerivedType - A simple derived type, like a const qualified type,
/// a typedef, a pointer or reference, etc.
class DIDerivedType : public DIType {
virtual void anchor();
protected:
explicit DIDerivedType(const MDNode *N, bool, bool)
: DIType(N, true, true) {}
@ -391,6 +395,7 @@ namespace llvm {
/// other types, like a function or struct.
/// FIXME: Why is this a DIDerivedType??
class DICompositeType : public DIDerivedType {
virtual void anchor();
public:
explicit DICompositeType(const MDNode *N = 0)
: DIDerivedType(N, true, true) {
@ -454,6 +459,7 @@ namespace llvm {
/// DISubprogram - This is a wrapper for a subprogram (e.g. a function).
class DISubprogram : public DIScope {
virtual void anchor();
public:
explicit DISubprogram(const MDNode *N = 0) : DIScope(N) {}
@ -687,6 +693,7 @@ namespace llvm {
/// DILexicalBlock - This is a wrapper for a lexical block.
class DILexicalBlock : public DIScope {
virtual void anchor();
public:
explicit DILexicalBlock(const MDNode *N = 0) : DIScope(N) {}
DIScope getContext() const { return getFieldAs<DIScope>(1); }
@ -705,6 +712,7 @@ namespace llvm {
/// DILexicalBlockFile - This is a wrapper for a lexical block with
/// a filename change.
class DILexicalBlockFile : public DIScope {
virtual void anchor();
public:
explicit DILexicalBlockFile(const MDNode *N = 0) : DIScope(N) {}
DIScope getContext() const { return getScope().getContext(); }
@ -724,6 +732,7 @@ namespace llvm {
/// DINameSpace - A wrapper for a C++ style name space.
class DINameSpace : public DIScope {
virtual void anchor();
public:
explicit DINameSpace(const MDNode *N = 0) : DIScope(N) {}
DIScope getContext() const { return getFieldAs<DIScope>(1); }

View File

@ -154,6 +154,7 @@ public:
/// used to compute a forward dominator frontiers.
///
class DominanceFrontier : public DominanceFrontierBase {
virtual void anchor();
public:
static char ID; // Pass ID, replacement for typeid
DominanceFrontier() :

View File

@ -30,6 +30,7 @@ template<typename ValueSubClass, typename ItemParentClass>
/// the function was called with.
/// @brief LLVM Argument representation
class Argument : public Value, public ilist_node<Argument> {
virtual void anchor();
Function *Parent;
friend class SymbolTableListTraits<Argument, Function>;

View File

@ -51,6 +51,7 @@ class Function;
/// occurred, more memory is allocated, and we reemit the code into it.
///
class JITCodeEmitter : public MachineCodeEmitter {
virtual void anchor();
public:
virtual ~JITCodeEmitter() {}

View File

@ -153,6 +153,7 @@ private:
/// LexicalScope - This class is used to track scope information.
///
class LexicalScope {
virtual void anchor();
public:
LexicalScope(LexicalScope *P, const MDNode *D, const MDNode *I, bool A)

View File

@ -25,6 +25,7 @@ class raw_ostream;
class MachineBasicBlock;
class MachineBranchProbabilityInfo : public ImmutablePass {
virtual void anchor();
// Default weight value. Used when we don't have information about the edge.
// TODO: DEFAULT_WEIGHT makes sense during static predication, when none of

View File

@ -20,6 +20,8 @@
#include "llvm/Support/DataTypes.h"
#include "llvm/Support/DebugLoc.h"
#include <string>
namespace llvm {
class MachineBasicBlock;
@ -49,6 +51,7 @@ class MCSymbol;
/// occurred, more memory is allocated, and we reemit the code into it.
///
class MachineCodeEmitter {
virtual void anchor();
protected:
/// BufferBegin/BufferEnd - Pointers to the start and end of the memory
/// allocated for this code buffer.

View File

@ -34,6 +34,7 @@ class raw_ostream;
/// Abstract base class for all machine specific constantpool value subclasses.
///
class MachineConstantPoolValue {
virtual void anchor();
Type *Ty;
public:

View File

@ -33,6 +33,7 @@ typedef void *(*MachinePassCtor)();
///
//===----------------------------------------------------------------------===//
class MachinePassRegistryListener {
virtual void anchor();
public:
MachinePassRegistryListener() {}
virtual ~MachinePassRegistryListener() {}

View File

@ -427,6 +427,7 @@ namespace llvm {
/// implementation to decide.
///
class SchedulingPriorityQueue {
virtual void anchor();
unsigned CurCycle;
bool HasReadyFilter;
public:

View File

@ -181,6 +181,7 @@ protected:
/// ISelUpdater - helper class to handle updates of the
/// instruction selection graph.
class ISelUpdater : public SelectionDAG::DAGUpdateListener {
virtual void anchor();
SelectionDAG::allnodes_iterator &ISelPosition;
public:
explicit ISelUpdater(SelectionDAG::allnodes_iterator &isp)

View File

@ -41,6 +41,7 @@ namespace llvm {
class Constant : public User {
void operator=(const Constant &); // Do not implement
Constant(const Constant &); // Do not implement
virtual void anchor();
protected:
Constant(Type *ty, ValueTy vty, Use *Ops, unsigned NumOps)

View File

@ -45,6 +45,7 @@ struct ConvertConstantType;
/// represents both boolean and integral constants.
/// @brief Class for constant integers.
class ConstantInt : public Constant {
virtual void anchor();
void *operator new(size_t, unsigned); // DO NOT IMPLEMENT
ConstantInt(const ConstantInt &); // DO NOT IMPLEMENT
ConstantInt(IntegerType *Ty, const APInt& V);
@ -229,6 +230,7 @@ public:
///
class ConstantFP : public Constant {
APFloat Val;
virtual void anchor();
void *operator new(size_t, unsigned);// DO NOT IMPLEMENT
ConstantFP(const ConstantFP &); // DO NOT IMPLEMENT
friend class LLVMContextImpl;

View File

@ -14,17 +14,19 @@
namespace llvm {
class MCAsmInfoCOFF : public MCAsmInfo {
virtual void anchor();
protected:
explicit MCAsmInfoCOFF();
};
class MCAsmInfoMicrosoft : public MCAsmInfoCOFF {
virtual void anchor();
protected:
explicit MCAsmInfoMicrosoft();
};
class MCAsmInfoGNUCOFF : public MCAsmInfoCOFF {
virtual void anchor();
protected:
explicit MCAsmInfoGNUCOFF();
};

View File

@ -18,7 +18,9 @@
#include "llvm/MC/MCAsmInfo.h"
namespace llvm {
struct MCAsmInfoDarwin : public MCAsmInfo {
class MCAsmInfoDarwin : public MCAsmInfo {
virtual void anchor();
public:
explicit MCAsmInfoDarwin();
};
}

View File

@ -106,6 +106,7 @@ public:
};
class MCDataFragment : public MCFragment {
virtual void anchor();
SmallString<32> Contents;
/// Fixups - The list of fixups in this fragment.
@ -160,6 +161,8 @@ public:
// object with just the MCInst and a code size, then we should just change
// MCDataFragment to have an optional MCInst at its end.
class MCInstFragment : public MCFragment {
virtual void anchor();
/// Inst - The instruction this is a fragment for.
MCInst Inst;
@ -215,6 +218,8 @@ public:
};
class MCAlignFragment : public MCFragment {
virtual void anchor();
/// Alignment - The alignment to ensure, in bytes.
unsigned Alignment;
@ -263,6 +268,8 @@ public:
};
class MCFillFragment : public MCFragment {
virtual void anchor();
/// Value - Value to use for filling bytes.
int64_t Value;
@ -300,6 +307,8 @@ public:
};
class MCOrgFragment : public MCFragment {
virtual void anchor();
/// Offset - The offset this fragment should start at.
const MCExpr *Offset;
@ -327,6 +336,8 @@ public:
};
class MCLEBFragment : public MCFragment {
virtual void anchor();
/// Value - The value this fragment should contain.
const MCExpr *Value;
@ -358,6 +369,8 @@ public:
};
class MCDwarfLineAddrFragment : public MCFragment {
virtual void anchor();
/// LineDelta - the value of the difference between the two line numbers
/// between two .loc dwarf directives.
int64_t LineDelta;
@ -393,6 +406,8 @@ public:
};
class MCDwarfCallFrameFragment : public MCFragment {
virtual void anchor();
/// AddrDelta - The expression for the difference of the two symbols that
/// make up the address delta between two .cfi_* dwarf directives.
const MCExpr *AddrDelta;

View File

@ -36,6 +36,7 @@ template<typename ValueSubClass, typename ItemParentClass>
/// These are used to efficiently contain a byte sequence for metadata.
/// MDString is always unnamed.
class MDString : public Value {
virtual void anchor();
MDString(const MDString &); // DO NOT IMPLEMENT
StringRef Str;

View File

@ -22,6 +22,7 @@ namespace llvm {
namespace object {
class Archive : public Binary {
virtual void anchor();
public:
class Child {
const Archive *Parent;

View File

@ -232,7 +232,7 @@ const uint64_t UnknownAddressOrSize = ~0ULL;
/// Concrete instances of this object are created by createObjectFile, which
/// figure out which type to create.
class ObjectFile : public Binary {
private:
virtual void anchor();
ObjectFile(); // = delete
ObjectFile(const ObjectFile &other); // = delete

View File

@ -68,6 +68,7 @@ class RecordKeeper;
class RecTy {
ListRecTy *ListTy;
virtual void anchor();
public:
RecTy() : ListTy(0) {}
virtual ~RecTy() {}
@ -489,6 +490,7 @@ RecTy *resolveTypes(RecTy *T1, RecTy *T2);
class Init {
Init(const Init &); // Do not define.
Init &operator=(const Init &); // Do not define.
virtual void anchor();
protected:
Init(void) {}
@ -617,6 +619,7 @@ class UnsetInit : public Init {
UnsetInit() : Init() {}
UnsetInit(const UnsetInit &); // Do not define.
UnsetInit &operator=(const UnsetInit &Other); // Do not define.
virtual void anchor();
public:
static UnsetInit *get();
@ -638,6 +641,7 @@ class BitInit : public Init {
explicit BitInit(bool V) : Value(V) {}
BitInit(const BitInit &Other); // Do not define.
BitInit &operator=(BitInit &Other); // Do not define.
virtual void anchor();
public:
static BitInit *get(bool V);
@ -750,6 +754,7 @@ class StringInit : public TypedInit {
StringInit(const StringInit &Other); // Do not define.
StringInit &operator=(const StringInit &Other); // Do not define.
virtual void anchor();
public:
static StringInit *get(const std::string &V);
@ -792,6 +797,7 @@ class CodeInit : public Init {
CodeInit(const CodeInit &Other); // Do not define.
CodeInit &operator=(const CodeInit &Other); // Do not define.
virtual void anchor();
public:
static CodeInit *get(const std::string &V);

View File

@ -21,6 +21,7 @@ class raw_ostream;
class RecordKeeper;
class TableGenAction {
virtual void anchor();
public:
virtual ~TableGenAction() {}

View File

@ -24,6 +24,7 @@ class Record;
class RecordKeeper;
struct TableGenBackend {
virtual void anchor();
virtual ~TableGenBackend() {}
// run - All TableGen backends should implement the run method, which should

View File

@ -30,6 +30,7 @@ namespace llvm {
/// TargetJITInfo - Target specific information required by the Just-In-Time
/// code generator.
class TargetJITInfo {
virtual void anchor();
public:
virtual ~TargetJITInfo() {}

View File

@ -208,6 +208,7 @@ namespace llvm {
/// library functions are available for the current target, and allows a
/// frontend to disable optimizations through -fno-builtin etc.
class TargetLibraryInfo : public ImmutablePass {
virtual void anchor();
unsigned char AvailableArray[(LibFunc::NumLibFuncs+3)/4];
llvm::DenseMap<unsigned, std::string> CustomNames;
static const char* StandardNames[LibFunc::NumLibFuncs];

View File

@ -38,6 +38,7 @@ public:
typedef const EVT* vt_iterator;
typedef const TargetRegisterClass* const * sc_iterator;
private:
virtual void anchor();
const MCRegisterClass *MC;
const vt_iterator VTs;
const unsigned *SubClassMask;

View File

@ -33,6 +33,7 @@ class ScalarEvolution;
/// Interface for visiting interesting IV users that are recognized but not
/// simplified by this utility.
class IVVisitor {
virtual void anchor();
public:
virtual ~IVVisitor() {}
virtual void visitCast(CastInst *Cast) = 0;

View File

@ -637,6 +637,32 @@ DIArray DICompileUnit::getGlobalVariables() const {
return DIArray();
}
//===----------------------------------------------------------------------===//
// DIDescriptor: vtable anchors for all descriptors.
//===----------------------------------------------------------------------===//
void DIScope::anchor() { }
void DICompileUnit::anchor() { }
void DIFile::anchor() { }
void DIType::anchor() { }
void DIBasicType::anchor() { }
void DIDerivedType::anchor() { }
void DICompositeType::anchor() { }
void DISubprogram::anchor() { }
void DILexicalBlock::anchor() { }
void DINameSpace::anchor() { }
void DILexicalBlockFile::anchor() { }
//===----------------------------------------------------------------------===//
// DIDescriptor: dump routines for all descriptors.
//===----------------------------------------------------------------------===//

View File

@ -35,6 +35,8 @@ namespace {
};
}
void DominanceFrontier::anchor() { }
const DominanceFrontier::DomSetType &
DominanceFrontier::calculate(const DominatorTree &DT,
const DomTreeNode *Node) {

View File

@ -174,6 +174,7 @@ void DIE::dump() {
}
#endif
void DIEValue::anchor() { }
#ifndef NDEBUG
void DIEValue::dump() {

View File

@ -195,6 +195,7 @@ namespace llvm {
/// DIEValue - A debug information entry value.
///
class DIEValue {
virtual void anchor();
public:
enum {
isInteger,

View File

@ -0,0 +1,14 @@
//===-- llvm/CodeGen/JITCodeEmitter.cpp - Code emission --------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "llvm/CodeGen/JITCodeEmitter.h"
using namespace llvm;
void JITCodeEmitter::anchor() { }

View File

@ -311,6 +311,8 @@ bool LexicalScopes::dominates(DebugLoc DL, MachineBasicBlock *MBB) {
return Result;
}
void LexicalScope::anchor() { }
/// dump - Print data structures.
void LexicalScope::dump() const {
#ifndef NDEBUG

View File

@ -29,6 +29,8 @@ STATISTIC(NumDCEDeleted, "Number of instructions deleted by DCE");
STATISTIC(NumDCEFoldedLoads, "Number of single use loads folded after DCE");
STATISTIC(NumFracRanges, "Number of live ranges fractured by DCE");
void LiveRangeEdit::Delegate::anchor() { }
LiveInterval &LiveRangeEdit::createFrom(unsigned OldReg,
LiveIntervals &LIS,
VirtRegMap &VRM) {

View File

@ -33,7 +33,9 @@ class VirtRegMap;
class LiveRangeEdit {
public:
/// Callback methods for LiveRangeEdit owners.
struct Delegate {
class Delegate {
virtual void anchor();
public:
/// Called immediately before erasing a dead machine instruction.
virtual void LRE_WillEraseInstruction(MachineInstr *MI) {}

View File

@ -26,6 +26,8 @@ INITIALIZE_PASS_END(MachineBranchProbabilityInfo, "machine-branch-prob",
char MachineBranchProbabilityInfo::ID = 0;
void MachineBranchProbabilityInfo::anchor() { }
uint32_t MachineBranchProbabilityInfo::
getSumForBlock(MachineBasicBlock *MBB, uint32_t &Scale) const {
// First we compute the sum with 64-bits of precision, ensuring that cannot

View File

@ -0,0 +1,14 @@
//===-- llvm/CodeGen/MachineCodeEmitter.cpp - Code emission -----*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "llvm/CodeGen/MachineCodeEmitter.h"
using namespace llvm;
void MachineCodeEmitter::anchor() { }

View File

@ -619,6 +619,8 @@ void MachineJumpTableInfo::dump() const { print(dbgs()); }
// MachineConstantPool implementation
//===----------------------------------------------------------------------===//
void MachineConstantPoolValue::anchor() { }
Type *MachineConstantPoolEntry::getType() const {
if (isMachineConstantPoolEntry())
return Val.MachineCPVal->getType();

View File

@ -16,6 +16,7 @@
using namespace llvm;
void MachinePassRegistryListener::anchor() { }
/// Add - Adds a function pass to the registration list.
///

View File

@ -31,6 +31,8 @@ static cl::opt<bool> StressSchedOpt(
cl::desc("Stress test instruction scheduling"));
#endif
void SchedulingPriorityQueue::anchor() { }
ScheduleDAG::ScheduleDAG(MachineFunction &mf)
: TM(mf.getTarget()),
TII(TM.getInstrInfo()),

View File

@ -262,6 +262,8 @@ void TargetLowering::AdjustInstrPostInstrSelection(MachineInstr *MI,
// SelectionDAGISel code
//===----------------------------------------------------------------------===//
void SelectionDAGISel::ISelUpdater::anchor() { }
SelectionDAGISel::SelectionDAGISel(const TargetMachine &tm,
CodeGenOpt::Level OL) :
MachineFunctionPass(ID), TM(tm), TLI(*tm.getTargetLowering()),

View File

@ -185,6 +185,8 @@ public:
} // end anonymous namespace
void Spiller::anchor() { }
llvm::Spiller* llvm::createSpiller(MachineFunctionPass &pass,
MachineFunction &mf,
VirtRegMap &vrm) {

View File

@ -22,6 +22,7 @@ namespace llvm {
/// Implementations are utility classes which insert spill or remat code on
/// demand.
class Spiller {
virtual void anchor();
public:
virtual ~Spiller() = 0;

View File

@ -165,3 +165,5 @@ DILineInfo DWARFContext::getLineInfoForAddress(uint64_t address) {
return DILineInfo(fileName.c_str(), row.Line, row.Column);
}
void DWARFContextInMemory::anchor() { }

View File

@ -86,6 +86,7 @@ public:
/// DWARFContext. It assumes all content is available in memory and stores
/// pointers to it.
class DWARFContextInMemory : public DWARFContext {
virtual void anchor();
StringRef InfoSection;
StringRef AbbrevSection;
StringRef ARangeSection;

View File

@ -0,0 +1,14 @@
//==-- MCJITMemoryManager.cpp - Definition for the Memory Manager -*-C++ -*-==//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "MCJITMemoryManager.h"
using namespace llvm;
void MCJITMemoryManager::anchor() { }

View File

@ -21,6 +21,7 @@ namespace llvm {
// and the RuntimeDyld interface that maps objects, by name, onto their
// matching LLVM IR counterparts in the module(s) being compiled.
class MCJITMemoryManager : public RTDyldMemoryManager {
virtual void anchor();
JITMemoryManager *JMM;
// FIXME: Multiple modules.

View File

@ -16,6 +16,8 @@
#include "llvm/ADT/SmallVector.h"
using namespace llvm;
void MCAsmInfoCOFF::anchor() { }
MCAsmInfoCOFF::MCAsmInfoCOFF() {
GlobalPrefix = "_";
COMMDirectiveAlignmentIsInBytes = false;
@ -39,10 +41,14 @@ MCAsmInfoCOFF::MCAsmInfoCOFF() {
SupportsDataRegions = false;
}
void MCAsmInfoMicrosoft::anchor() { }
MCAsmInfoMicrosoft::MCAsmInfoMicrosoft() {
AllowQuotesInName = true;
}
void MCAsmInfoGNUCOFF::anchor() { }
MCAsmInfoGNUCOFF::MCAsmInfoGNUCOFF() {
}

View File

@ -18,6 +18,8 @@
#include "llvm/MC/MCStreamer.h"
using namespace llvm;
void MCAsmInfoDarwin::anchor() { }
MCAsmInfoDarwin::MCAsmInfoDarwin() {
// Common settings for all Darwin targets.
// Syntax:

View File

@ -972,3 +972,13 @@ void MCAssembler::dump() {
}
OS << "]>\n";
}
// anchors for MC*Fragment vtables
void MCDataFragment::anchor() { }
void MCInstFragment::anchor() { }
void MCAlignFragment::anchor() { }
void MCFillFragment::anchor() { }
void MCOrgFragment::anchor() { }
void MCLEBFragment::anchor() { }
void MCDwarfLineAddrFragment::anchor() { }
void MCDwarfCallFrameFragment::anchor() { }

View File

@ -74,6 +74,8 @@ static bool isInternalMember(const ArchiveMemberHeader &amh) {
return false;
}
void Archive::anchor() { }
Archive::Child Archive::Child::getNext() const {
size_t SpaceToSkip = sizeof(ArchiveMemberHeader) +
ToHeader(Data.data())->getSize();

View File

@ -21,6 +21,8 @@
using namespace llvm;
using namespace object;
void ObjectFile::anchor() { }
ObjectFile::ObjectFile(unsigned int Type, MemoryBuffer *source, error_code &ec)
: Binary(Type, source) {
}

View File

@ -0,0 +1,14 @@
//== IntrusiveRefCntPtr.cpp - Smart Refcounting Pointer ----------*- C++ -*-==//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "llvm/ADT/IntrusiveRefCntPtr.h"
using namespace llvm;
void RefCountedBaseVPTR::anchor() { }

View File

@ -81,6 +81,7 @@ StringRecTy StringRecTy::Shared;
CodeRecTy CodeRecTy::Shared;
DagRecTy DagRecTy::Shared;
void RecTy::anchor() { }
void RecTy::dump() const { print(errs()); }
ListRecTy *RecTy::getListTy() {
@ -444,13 +445,18 @@ RecTy *llvm::resolveTypes(RecTy *T1, RecTy *T2) {
// Initializer implementations
//===----------------------------------------------------------------------===//
void Init::anchor() { }
void Init::dump() const { return print(errs()); }
void UnsetInit::anchor() { }
UnsetInit *UnsetInit::get() {
static UnsetInit TheInit;
return &TheInit;
}
void BitInit::anchor() { }
BitInit *BitInit::get(bool V) {
static BitInit True(true);
static BitInit False(false);
@ -565,6 +571,8 @@ IntInit::convertInitializerBitRange(const std::vector<unsigned> &Bits) const {
return BitsInit::get(NewBits);
}
void StringInit::anchor() { }
StringInit *StringInit::get(const std::string &V) {
typedef StringMap<StringInit *> Pool;
static Pool ThePool;
@ -574,6 +582,8 @@ StringInit *StringInit::get(const std::string &V) {
return I;
}
void CodeInit::anchor() { }
CodeInit *CodeInit::get(const std::string &V) {
typedef StringMap<CodeInit *> Pool;
static Pool ThePool;

View File

@ -0,0 +1,15 @@
//===- TableGenAction.cpp - defines TableGenAction --------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "llvm/TableGen/TableGenAction.h"
using namespace llvm;
void TableGenAction::anchor() { }

View File

@ -15,6 +15,8 @@
#include "llvm/TableGen/Record.h"
using namespace llvm;
void TableGenBackend::anchor() { }
void TableGenBackend::EmitSourceFileHeader(const std::string &Desc,
raw_ostream &OS) const {
OS << "//===- TableGen'erated file -------------------------------------*-"

View File

@ -0,0 +1,14 @@
//====- ARMMachineFuctionInfo.cpp - ARM machine function info ---*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "ARMMachineFunctionInfo.h"
using namespace llvm;
void ARMFunctionInfo::anchor() { }

View File

@ -25,6 +25,7 @@ namespace llvm {
/// ARMFunctionInfo - This class is derived from MachineFunctionInfo and
/// contains private ARM-specific information for each MachineFunction.
class ARMFunctionInfo : public MachineFunctionInfo {
virtual void anchor();
/// isThumb - True if this function is compiled under Thumb mode.
/// Used to initialized Align, so must precede it.

View File

@ -16,6 +16,8 @@
#include "ARMRegisterInfo.h"
using namespace llvm;
void ARMRegisterInfo::anchor() { }
ARMRegisterInfo::ARMRegisterInfo(const ARMBaseInstrInfo &tii,
const ARMSubtarget &sti)
: ARMBaseRegisterInfo(tii, sti) {

View File

@ -24,6 +24,7 @@ namespace llvm {
class Type;
struct ARMRegisterInfo : public ARMBaseRegisterInfo {
virtual void anchor();
public:
ARMRegisterInfo(const ARMBaseInstrInfo &tii, const ARMSubtarget &STI);
};

View File

@ -34,6 +34,7 @@ extern "C" void LLVMInitializeARMTarget() {
RegisterTargetMachine<ThumbTargetMachine> Y(TheThumbTarget);
}
/// TargetMachine ctor - Create an ARM architecture model.
///
ARMBaseTargetMachine::ARMBaseTargetMachine(const Target &T, StringRef TT,
@ -50,6 +51,8 @@ ARMBaseTargetMachine::ARMBaseTargetMachine(const Target &T, StringRef TT,
this->Options.FloatABIType = FloatABI::Soft;
}
void ARMTargetMachine::anchor() { }
ARMTargetMachine::ARMTargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS,
const TargetOptions &Options,
@ -74,6 +77,8 @@ ARMTargetMachine::ARMTargetMachine(const Target &T, StringRef TT,
"support ARM mode execution!");
}
void ThumbTargetMachine::anchor() { }
ThumbTargetMachine::ThumbTargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS,
const TargetOptions &Options,

View File

@ -63,6 +63,7 @@ public:
/// ARMTargetMachine - ARM target machine.
///
class ARMTargetMachine : public ARMBaseTargetMachine {
virtual void anchor();
ARMInstrInfo InstrInfo;
const TargetData DataLayout; // Calculates type size & alignment
ARMELFWriterInfo ELFWriterInfo;
@ -103,6 +104,7 @@ class ARMTargetMachine : public ARMBaseTargetMachine {
/// Thumb-1 and Thumb-2.
///
class ThumbTargetMachine : public ARMBaseTargetMachine {
virtual void anchor();
// Either Thumb1InstrInfo or Thumb2InstrInfo.
OwningPtr<ARMBaseInstrInfo> InstrInfo;
const TargetData DataLayout; // Calculates type size & alignment

View File

@ -48,6 +48,8 @@ static const char *const arm_asm_table[] = {
0,0
};
void ARMMCAsmInfoDarwin::anchor() { }
ARMMCAsmInfoDarwin::ARMMCAsmInfoDarwin() {
AsmTransCBE = arm_asm_table;
Data64bitsDirective = 0;
@ -61,6 +63,8 @@ ARMMCAsmInfoDarwin::ARMMCAsmInfoDarwin() {
ExceptionsType = ExceptionHandling::SjLj;
}
void ARMELFMCAsmInfo::anchor() { }
ARMELFMCAsmInfo::ARMELFMCAsmInfo() {
// ".comm align is in bytes but .align is pow-2."
AlignmentIsInBytes = false;

View File

@ -18,11 +18,15 @@
namespace llvm {
struct ARMMCAsmInfoDarwin : public MCAsmInfoDarwin {
class ARMMCAsmInfoDarwin : public MCAsmInfoDarwin {
virtual void anchor();
public:
explicit ARMMCAsmInfoDarwin();
};
struct ARMELFMCAsmInfo : public MCAsmInfo {
class ARMELFMCAsmInfo : public MCAsmInfo {
virtual void anchor();
public:
explicit ARMELFMCAsmInfo();
};

View File

@ -14,6 +14,8 @@
#include "SPUMCAsmInfo.h"
using namespace llvm;
void SPULinuxMCAsmInfo::anchor() { }
SPULinuxMCAsmInfo::SPULinuxMCAsmInfo(const Target &T, StringRef TT) {
IsLittleEndian = false;

View File

@ -20,7 +20,9 @@
namespace llvm {
class Target;
struct SPULinuxMCAsmInfo : public MCAsmInfo {
class SPULinuxMCAsmInfo : public MCAsmInfo {
virtual void anchor();
public:
explicit SPULinuxMCAsmInfo(const Target &T, StringRef TT);
};
} // namespace llvm

View File

@ -0,0 +1,14 @@
//==-- SPUMachineFunctionInfo.cpp - Private data used for CellSPU -*- C++ -*-=//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "SPUMachineFunction.h"
using namespace llvm;
void SPUFunctionInfo::anchor() { }

View File

@ -21,7 +21,8 @@ namespace llvm {
/// SPUFunctionInfo - Cell SPU target-specific information for each
/// MachineFunction
class SPUFunctionInfo : public MachineFunctionInfo {
private:
virtual void anchor();
/// UsesLR - Indicates whether LR is used in the current function.
///
bool UsesLR;

View File

@ -0,0 +1,14 @@
//===-- MBlazeMachineFunctionInfo.cpp - Private data --------------*- C++ -*-=//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "MBlazeMachineFunction.h"
using namespace llvm;
void MBlazeFunctionInfo::anchor() { }

View File

@ -25,8 +25,8 @@ namespace llvm {
/// MBlazeFunctionInfo - This class is derived from MachineFunction private
/// MBlaze target-specific information for each MachineFunction.
class MBlazeFunctionInfo : public MachineFunctionInfo {
virtual void anchor();
private:
/// Holds for each function where on the stack the Frame Pointer must be
/// saved. This is used on Prologue and Epilogue to emit FP save/restore
int FPStackOffset;

View File

@ -14,6 +14,8 @@
#include "MBlazeMCAsmInfo.h"
using namespace llvm;
void MBlazeMCAsmInfo::anchor() { }
MBlazeMCAsmInfo::MBlazeMCAsmInfo() {
IsLittleEndian = false;
StackGrowsUp = false;

View File

@ -21,6 +21,7 @@ namespace llvm {
class Target;
class MBlazeMCAsmInfo : public MCAsmInfo {
virtual void anchor();
public:
explicit MBlazeMCAsmInfo();
};

View File

@ -14,6 +14,8 @@
#include "MSP430MCAsmInfo.h"
using namespace llvm;
void MSP430MCAsmInfo::anchor() { }
MSP430MCAsmInfo::MSP430MCAsmInfo(const Target &T, StringRef TT) {
PointerSize = 2;

View File

@ -20,7 +20,9 @@
namespace llvm {
class Target;
struct MSP430MCAsmInfo : public MCAsmInfo {
class MSP430MCAsmInfo : public MCAsmInfo {
virtual void anchor();
public:
explicit MSP430MCAsmInfo(const Target &T, StringRef TT);
};

View File

@ -0,0 +1,14 @@
//==- MSP430MachineFuctionInfo.cpp - MSP430 machine function info -*- C++ -*-=//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "MSP430MachineFunctionInfo.h"
using namespace llvm;
void MSP430MachineFunctionInfo::anchor() { }

View File

@ -21,6 +21,8 @@ namespace llvm {
/// MSP430MachineFunctionInfo - This class is derived from MachineFunction and
/// contains private MSP430 target-specific information for each MachineFunction.
class MSP430MachineFunctionInfo : public MachineFunctionInfo {
virtual void anchor();
/// CalleeSavedFrameSize - Size of the callee-saved register portion of the
/// stack frame in bytes.
unsigned CalleeSavedFrameSize;

View File

@ -21,6 +21,8 @@
using namespace llvm;
void MSP430Subtarget::anchor() { }
MSP430Subtarget::MSP430Subtarget(const std::string &TT,
const std::string &CPU,
const std::string &FS) :

View File

@ -25,6 +25,7 @@ namespace llvm {
class StringRef;
class MSP430Subtarget : public MSP430GenSubtargetInfo {
virtual void anchor();
bool ExtendedInsts;
public:
/// This constructor initializes the data members to match that

View File

@ -16,6 +16,8 @@
using namespace llvm;
void MipsMCAsmInfo::anchor() { }
MipsMCAsmInfo::MipsMCAsmInfo(const Target &T, StringRef TT) {
Triple TheTriple(TT);
if ((TheTriple.getArch() == Triple::mips) ||

View File

@ -21,6 +21,7 @@ namespace llvm {
class Target;
class MipsMCAsmInfo : public MCAsmInfo {
virtual void anchor();
public:
explicit MipsMCAsmInfo(const Target &T, StringRef TT);
};

View File

@ -0,0 +1,14 @@
//===-- MipsMachineFunctionInfo.cpp - Private data used for Mips --*- C++ -*-=//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "MipsMachineFunction.h"
using namespace llvm;
void MipsFunctionInfo::anchor() { }

View File

@ -25,8 +25,8 @@ namespace llvm {
/// MipsFunctionInfo - This class is derived from MachineFunction private
/// Mips target-specific information for each MachineFunction.
class MipsFunctionInfo : public MachineFunctionInfo {
virtual void anchor();
private:
MachineFunction& MF;
/// SRetReturnReg - Some subtargets require that sret lowering includes
/// returning the value of the returned struct in a register. This field

View File

@ -21,6 +21,8 @@
using namespace llvm;
void MipsSubtarget::anchor() { }
MipsSubtarget::MipsSubtarget(const std::string &TT, const std::string &CPU,
const std::string &FS, bool little) :
MipsGenSubtargetInfo(TT, CPU, FS),

View File

@ -25,6 +25,7 @@ namespace llvm {
class StringRef;
class MipsSubtarget : public MipsGenSubtargetInfo {
virtual void anchor();
public:
// NOTE: O64 will not be supported.

View File

@ -52,6 +52,8 @@ MipsTargetMachine(const Target &T, StringRef TT,
TLInfo(*this), TSInfo(*this), JITInfo() {
}
void MipsebTargetMachine::anchor() { }
MipsebTargetMachine::
MipsebTargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS, const TargetOptions &Options,
@ -59,6 +61,8 @@ MipsebTargetMachine(const Target &T, StringRef TT,
CodeGenOpt::Level OL)
: MipsTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, false) {}
void MipselTargetMachine::anchor() { }
MipselTargetMachine::
MipselTargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS, const TargetOptions &Options,
@ -66,6 +70,8 @@ MipselTargetMachine(const Target &T, StringRef TT,
CodeGenOpt::Level OL)
: MipsTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, true) {}
void Mips64ebTargetMachine::anchor() { }
Mips64ebTargetMachine::
Mips64ebTargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS, const TargetOptions &Options,
@ -73,6 +79,8 @@ Mips64ebTargetMachine(const Target &T, StringRef TT,
CodeGenOpt::Level OL)
: MipsTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, false) {}
void Mips64elTargetMachine::anchor() { }
Mips64elTargetMachine::
Mips64elTargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS, const TargetOptions &Options,

View File

@ -80,6 +80,7 @@ namespace llvm {
/// MipsebTargetMachine - Mips32 big endian target machine.
///
class MipsebTargetMachine : public MipsTargetMachine {
virtual void anchor();
public:
MipsebTargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS, const TargetOptions &Options,
@ -90,6 +91,7 @@ public:
/// MipselTargetMachine - Mips32 little endian target machine.
///
class MipselTargetMachine : public MipsTargetMachine {
virtual void anchor();
public:
MipselTargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS, const TargetOptions &Options,
@ -100,6 +102,7 @@ public:
/// Mips64ebTargetMachine - Mips64 big endian target machine.
///
class Mips64ebTargetMachine : public MipsTargetMachine {
virtual void anchor();
public:
Mips64ebTargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS,
@ -111,6 +114,7 @@ public:
/// Mips64elTargetMachine - Mips64 little endian target machine.
///
class Mips64elTargetMachine : public MipsTargetMachine {
virtual void anchor();
public:
Mips64elTargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS,

View File

@ -16,6 +16,8 @@
using namespace llvm;
void PTXMCAsmInfo::anchor() { }
PTXMCAsmInfo::PTXMCAsmInfo(const Target &T, const StringRef &TT) {
Triple TheTriple(TT);
if (TheTriple.getArch() == Triple::ptx64)

View File

@ -20,7 +20,9 @@ namespace llvm {
class Target;
class StringRef;
struct PTXMCAsmInfo : public MCAsmInfo {
class PTXMCAsmInfo : public MCAsmInfo {
virtual void anchor();
public:
explicit PTXMCAsmInfo(const Target &T, const StringRef &TT);
};
} // namespace llvm

View File

@ -0,0 +1,14 @@
//===- PTXMachineFuctionInfo.cpp - PTX machine function info -----*- C++ -*-==//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "PTXMachineFunctionInfo.h"
using namespace llvm;
void PTXMachineFunctionInfo::anchor() { }

View File

@ -30,7 +30,7 @@ namespace llvm {
/// contains private PTX target-specific information for each MachineFunction.
///
class PTXMachineFunctionInfo : public MachineFunctionInfo {
private:
virtual void anchor();
bool IsKernel;
DenseSet<unsigned> RegArgs;
DenseSet<unsigned> RegRets;

View File

@ -22,6 +22,8 @@
using namespace llvm;
void PTXSubtarget::anchor() { }
PTXSubtarget::PTXSubtarget(const std::string &TT, const std::string &CPU,
const std::string &FS, bool is64Bit)
: PTXGenSubtargetInfo(TT, CPU, FS),

View File

@ -23,6 +23,7 @@ namespace llvm {
class StringRef;
class PTXSubtarget : public PTXGenSubtargetInfo {
virtual void anchor();
public:
/**

View File

@ -85,6 +85,8 @@ PTXTargetMachine::PTXTargetMachine(const Target &T,
TLInfo(*this) {
}
void PTX32TargetMachine::anchor() { }
PTX32TargetMachine::PTX32TargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS,
const TargetOptions &Options,
@ -93,6 +95,8 @@ PTX32TargetMachine::PTX32TargetMachine(const Target &T, StringRef TT,
: PTXTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, false) {
}
void PTX64TargetMachine::anchor() { }
PTX64TargetMachine::PTX64TargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS,
const TargetOptions &Options,

View File

@ -91,6 +91,7 @@ class PTXTargetMachine : public LLVMTargetMachine {
class PTX32TargetMachine : public PTXTargetMachine {
virtual void anchor();
public:
PTX32TargetMachine(const Target &T, StringRef TT,
@ -100,6 +101,7 @@ public:
}; // class PTX32TargetMachine
class PTX64TargetMachine : public PTXTargetMachine {
virtual void anchor();
public:
PTX64TargetMachine(const Target &T, StringRef TT,

View File

@ -14,6 +14,8 @@
#include "PPCMCAsmInfo.h"
using namespace llvm;
void PPCMCAsmInfoDarwin::anchor() { }
PPCMCAsmInfoDarwin::PPCMCAsmInfoDarwin(bool is64Bit) {
if (is64Bit)
PointerSize = 8;
@ -30,6 +32,8 @@ PPCMCAsmInfoDarwin::PPCMCAsmInfoDarwin(bool is64Bit) {
SupportsDebugInformation= true; // Debug information.
}
void PPCLinuxMCAsmInfo::anchor() { }
PPCLinuxMCAsmInfo::PPCLinuxMCAsmInfo(bool is64Bit) {
if (is64Bit)
PointerSize = 8;

View File

@ -18,11 +18,15 @@
namespace llvm {
struct PPCMCAsmInfoDarwin : public MCAsmInfoDarwin {
class PPCMCAsmInfoDarwin : public MCAsmInfoDarwin {
virtual void anchor();
public:
explicit PPCMCAsmInfoDarwin(bool is64Bit);
};
struct PPCLinuxMCAsmInfo : public MCAsmInfo {
class PPCLinuxMCAsmInfo : public MCAsmInfo {
virtual void anchor();
public:
explicit PPCLinuxMCAsmInfo(bool is64Bit);
};

View File

@ -0,0 +1,15 @@
//=-- PPCMachineFunctionInfo.cpp - Private data used for PowerPC --*- C++ -*-=//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "PPCMachineFunctionInfo.h"
using namespace llvm;
void PPCFunctionInfo::anchor() { }

View File

@ -21,7 +21,8 @@ namespace llvm {
/// PPCFunctionInfo - This class is derived from MachineFunction private
/// PowerPC target-specific information for each MachineFunction.
class PPCFunctionInfo : public MachineFunctionInfo {
private:
virtual void anchor();
/// FramePointerSaveIndex - Frame index of where the old frame pointer is
/// stored. Also used as an anchor for instructions that need to be altered
/// when using frame pointers (dyna_add, dyna_sub.)

View File

@ -44,6 +44,8 @@ PPCTargetMachine::PPCTargetMachine(const Target &T, StringRef TT,
/// groups, which typically degrades performance.
bool PPCTargetMachine::getEnableTailMergeDefault() const { return false; }
void PPC32TargetMachine::anchor() { }
PPC32TargetMachine::PPC32TargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS,
const TargetOptions &Options,
@ -52,6 +54,7 @@ PPC32TargetMachine::PPC32TargetMachine(const Target &T, StringRef TT,
: PPCTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, false) {
}
void PPC64TargetMachine::anchor() { }
PPC64TargetMachine::PPC64TargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS,

View File

@ -77,6 +77,7 @@ public:
/// PPC32TargetMachine - PowerPC 32-bit target machine.
///
class PPC32TargetMachine : public PPCTargetMachine {
virtual void anchor();
public:
PPC32TargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS, const TargetOptions &Options,
@ -87,6 +88,7 @@ public:
/// PPC64TargetMachine - PowerPC 64-bit target machine.
///
class PPC64TargetMachine : public PPCTargetMachine {
virtual void anchor();
public:
PPC64TargetMachine(const Target &T, StringRef TT,
StringRef CPU, StringRef FS, const TargetOptions &Options,

Some files were not shown because too many files have changed in this diff Show More