[llvm-commits] [llvm] r146960 - in /llvm/trunk: include/llvm/ include/llvm/ADT/ include/llvm/Analysis/ include/llvm/CodeGen/ include/llvm/MC/ include/llvm/Object/ include/llvm/TableGen/ include/llvm/Target/ include/llvm/Transforms/Utils/ lib/Analysis/ lib/CodeGen/ lib/CodeGen/AsmPrinter/ lib/CodeGen/SelectionDAG/ lib/DebugInfo/ lib/ExecutionEngine/MCJIT/ lib/MC/ lib/Object/ lib/Support/ lib/TableGen/ lib/Target/ lib/Target/ARM/ lib/Target/ARM/MCTargetDesc/ lib/Target/CellSPU/ lib/Target/CellSPU/MCTargetDesc/ lib/Target...
Chad Rosier
mcrosier at apple.com
Mon Dec 19 23:47:36 PST 2011
David,
Could you please update the CMakeList.txt?
Chad
On Dec 19, 2011, at 6:50 PM, David Blaikie wrote:
> Author: dblaikie
> Date: Mon Dec 19 20:50:00 2011
> New Revision: 146960
>
> URL: http://llvm.org/viewvc/llvm-project?rev=146960&view=rev
> Log:
> Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
>
> Added:
> llvm/trunk/lib/CodeGen/JITCodeEmitter.cpp
> llvm/trunk/lib/CodeGen/MachineCodeEmitter.cpp
> llvm/trunk/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.cpp
> llvm/trunk/lib/Support/IntrusiveRefCntPtr.cpp
> llvm/trunk/lib/TableGen/TableGenAction.cpp
> llvm/trunk/lib/Target/ARM/ARMMachineFunctionInfo.cpp
> llvm/trunk/lib/Target/CellSPU/SPUMachineFunction.cpp
> llvm/trunk/lib/Target/MBlaze/MBlazeMachineFunction.cpp
> llvm/trunk/lib/Target/MSP430/MSP430MachineFunctionInfo.cpp
> llvm/trunk/lib/Target/Mips/MipsMachineFunction.cpp
> llvm/trunk/lib/Target/PTX/PTXMachineFunctionInfo.cpp
> llvm/trunk/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp
> llvm/trunk/lib/Target/Sparc/SparcMachineFunctionInfo.cpp
> llvm/trunk/lib/Target/TargetJITInfo.cpp
> llvm/trunk/lib/Target/X86/X86MachineFunctionInfo.cpp
> llvm/trunk/lib/Target/XCore/XCoreMachineFunctionInfo.cpp
> llvm/trunk/utils/TableGen/X86ModRMFilters.cpp
> Modified:
> llvm/trunk/include/llvm/ADT/IntrusiveRefCntPtr.h
> llvm/trunk/include/llvm/Analysis/DebugInfo.h
> llvm/trunk/include/llvm/Analysis/DominanceFrontier.h
> llvm/trunk/include/llvm/Argument.h
> llvm/trunk/include/llvm/CodeGen/JITCodeEmitter.h
> llvm/trunk/include/llvm/CodeGen/LexicalScopes.h
> llvm/trunk/include/llvm/CodeGen/MachineBranchProbabilityInfo.h
> llvm/trunk/include/llvm/CodeGen/MachineCodeEmitter.h
> llvm/trunk/include/llvm/CodeGen/MachineConstantPool.h
> llvm/trunk/include/llvm/CodeGen/MachinePassRegistry.h
> llvm/trunk/include/llvm/CodeGen/ScheduleDAG.h
> llvm/trunk/include/llvm/CodeGen/SelectionDAGISel.h
> llvm/trunk/include/llvm/Constant.h
> llvm/trunk/include/llvm/Constants.h
> llvm/trunk/include/llvm/MC/MCAsmInfoCOFF.h
> llvm/trunk/include/llvm/MC/MCAsmInfoDarwin.h
> llvm/trunk/include/llvm/MC/MCAssembler.h
> llvm/trunk/include/llvm/Metadata.h
> llvm/trunk/include/llvm/Object/Archive.h
> llvm/trunk/include/llvm/Object/ObjectFile.h
> llvm/trunk/include/llvm/TableGen/Record.h
> llvm/trunk/include/llvm/TableGen/TableGenAction.h
> llvm/trunk/include/llvm/TableGen/TableGenBackend.h
> llvm/trunk/include/llvm/Target/TargetJITInfo.h
> llvm/trunk/include/llvm/Target/TargetLibraryInfo.h
> llvm/trunk/include/llvm/Target/TargetRegisterInfo.h
> llvm/trunk/include/llvm/Transforms/Utils/SimplifyIndVar.h
> llvm/trunk/lib/Analysis/DebugInfo.cpp
> llvm/trunk/lib/Analysis/DominanceFrontier.cpp
> llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp
> llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h
> llvm/trunk/lib/CodeGen/LexicalScopes.cpp
> llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp
> llvm/trunk/lib/CodeGen/LiveRangeEdit.h
> llvm/trunk/lib/CodeGen/MachineBranchProbabilityInfo.cpp
> llvm/trunk/lib/CodeGen/MachineFunction.cpp
> llvm/trunk/lib/CodeGen/MachinePassRegistry.cpp
> llvm/trunk/lib/CodeGen/ScheduleDAG.cpp
> llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
> llvm/trunk/lib/CodeGen/Spiller.cpp
> llvm/trunk/lib/CodeGen/Spiller.h
> llvm/trunk/lib/DebugInfo/DWARFContext.cpp
> llvm/trunk/lib/DebugInfo/DWARFContext.h
> llvm/trunk/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.h
> llvm/trunk/lib/MC/MCAsmInfoCOFF.cpp
> llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp
> llvm/trunk/lib/MC/MCAssembler.cpp
> llvm/trunk/lib/Object/Archive.cpp
> llvm/trunk/lib/Object/ObjectFile.cpp
> llvm/trunk/lib/TableGen/Record.cpp
> llvm/trunk/lib/TableGen/TableGenBackend.cpp
> llvm/trunk/lib/Target/ARM/ARMMachineFunctionInfo.h
> llvm/trunk/lib/Target/ARM/ARMRegisterInfo.cpp
> llvm/trunk/lib/Target/ARM/ARMRegisterInfo.h
> llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp
> llvm/trunk/lib/Target/ARM/ARMTargetMachine.h
> llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp
> llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h
> llvm/trunk/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.cpp
> llvm/trunk/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.h
> llvm/trunk/lib/Target/CellSPU/SPUMachineFunction.h
> llvm/trunk/lib/Target/MBlaze/MBlazeMachineFunction.h
> llvm/trunk/lib/Target/MBlaze/MCTargetDesc/MBlazeMCAsmInfo.cpp
> llvm/trunk/lib/Target/MBlaze/MCTargetDesc/MBlazeMCAsmInfo.h
> llvm/trunk/lib/Target/MSP430/MCTargetDesc/MSP430MCAsmInfo.cpp
> llvm/trunk/lib/Target/MSP430/MCTargetDesc/MSP430MCAsmInfo.h
> llvm/trunk/lib/Target/MSP430/MSP430MachineFunctionInfo.h
> llvm/trunk/lib/Target/MSP430/MSP430Subtarget.cpp
> llvm/trunk/lib/Target/MSP430/MSP430Subtarget.h
> llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp
> llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.h
> llvm/trunk/lib/Target/Mips/MipsMachineFunction.h
> llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp
> llvm/trunk/lib/Target/Mips/MipsSubtarget.h
> llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp
> llvm/trunk/lib/Target/Mips/MipsTargetMachine.h
> llvm/trunk/lib/Target/PTX/MCTargetDesc/PTXMCAsmInfo.cpp
> llvm/trunk/lib/Target/PTX/MCTargetDesc/PTXMCAsmInfo.h
> llvm/trunk/lib/Target/PTX/PTXMachineFunctionInfo.h
> llvm/trunk/lib/Target/PTX/PTXSubtarget.cpp
> llvm/trunk/lib/Target/PTX/PTXSubtarget.h
> llvm/trunk/lib/Target/PTX/PTXTargetMachine.cpp
> llvm/trunk/lib/Target/PTX/PTXTargetMachine.h
> llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp
> llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.h
> llvm/trunk/lib/Target/PowerPC/PPCMachineFunctionInfo.h
> llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.cpp
> llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.h
> llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp
> llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.h
> llvm/trunk/lib/Target/Sparc/SparcMachineFunctionInfo.h
> llvm/trunk/lib/Target/Sparc/SparcSubtarget.cpp
> llvm/trunk/lib/Target/Sparc/SparcSubtarget.h
> llvm/trunk/lib/Target/Sparc/SparcTargetMachine.cpp
> llvm/trunk/lib/Target/Sparc/SparcTargetMachine.h
> llvm/trunk/lib/Target/TargetLibraryInfo.cpp
> llvm/trunk/lib/Target/TargetRegisterInfo.cpp
> llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp
> llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.h
> llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
> llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.h
> llvm/trunk/lib/Target/X86/X86MachineFunctionInfo.h
> llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
> llvm/trunk/lib/Target/X86/X86TargetMachine.h
> llvm/trunk/lib/Target/XCore/MCTargetDesc/XCoreMCAsmInfo.cpp
> llvm/trunk/lib/Target/XCore/MCTargetDesc/XCoreMCAsmInfo.h
> llvm/trunk/lib/Target/XCore/XCoreMachineFunctionInfo.h
> llvm/trunk/lib/Target/XCore/XCoreSubtarget.cpp
> llvm/trunk/lib/Target/XCore/XCoreSubtarget.h
> llvm/trunk/lib/Transforms/Utils/SimplifyIndVar.cpp
> llvm/trunk/lib/VMCore/Constants.cpp
> llvm/trunk/lib/VMCore/ConstantsContext.h
> llvm/trunk/lib/VMCore/Function.cpp
> llvm/trunk/lib/VMCore/LLVMContextImpl.cpp
> llvm/trunk/lib/VMCore/Metadata.cpp
> llvm/trunk/lib/VMCore/PassManager.cpp
> llvm/trunk/tools/bugpoint/CrashDebugger.cpp
> llvm/trunk/tools/bugpoint/ToolRunner.cpp
> llvm/trunk/tools/bugpoint/ToolRunner.h
> llvm/trunk/tools/llvm-diff/DiffConsumer.cpp
> llvm/trunk/tools/llvm-diff/DiffConsumer.h
> llvm/trunk/tools/llvm-diff/DifferenceEngine.cpp
> llvm/trunk/tools/llvm-diff/DifferenceEngine.h
> llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
> llvm/trunk/tools/llvm-objdump/llvm-objdump.h
> llvm/trunk/unittests/Support/IRBuilderTest.cpp
> llvm/trunk/unittests/Transforms/Utils/Cloning.cpp
> llvm/trunk/utils/TableGen/DAGISelMatcher.cpp
> llvm/trunk/utils/TableGen/DAGISelMatcher.h
> llvm/trunk/utils/TableGen/SetTheory.cpp
> llvm/trunk/utils/TableGen/SetTheory.h
> llvm/trunk/utils/TableGen/TGValueTypes.cpp
> llvm/trunk/utils/TableGen/TableGen.cpp
> llvm/trunk/utils/TableGen/X86ModRMFilters.h
>
> Modified: llvm/trunk/include/llvm/ADT/IntrusiveRefCntPtr.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/IntrusiveRefCntPtr.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/ADT/IntrusiveRefCntPtr.h (original)
> +++ llvm/trunk/include/llvm/ADT/IntrusiveRefCntPtr.h Mon Dec 19 20:50:00 2011
> @@ -65,6 +65,7 @@
> //===----------------------------------------------------------------------===//
> class RefCountedBaseVPTR {
> mutable unsigned ref_cnt;
> + virtual void anchor();
>
> protected:
> RefCountedBaseVPTR() : ref_cnt(0) {}
>
> Modified: llvm/trunk/include/llvm/Analysis/DebugInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/DebugInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Analysis/DebugInfo.h (original)
> +++ llvm/trunk/include/llvm/Analysis/DebugInfo.h Mon Dec 19 20:50:00 2011
> @@ -153,6 +153,7 @@
>
> /// 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 @@
>
> /// 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 @@
>
> /// 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 @@
> /// 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 @@
>
> /// 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 @@
>
> /// 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 @@
> /// 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 @@
> /// 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 @@
>
> /// 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 @@
>
> /// 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 @@
> /// 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 @@
>
> /// 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); }
>
> Modified: llvm/trunk/include/llvm/Analysis/DominanceFrontier.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/DominanceFrontier.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Analysis/DominanceFrontier.h (original)
> +++ llvm/trunk/include/llvm/Analysis/DominanceFrontier.h Mon Dec 19 20:50:00 2011
> @@ -154,6 +154,7 @@
> /// used to compute a forward dominator frontiers.
> ///
> class DominanceFrontier : public DominanceFrontierBase {
> + virtual void anchor();
> public:
> static char ID; // Pass ID, replacement for typeid
> DominanceFrontier() :
>
> Modified: llvm/trunk/include/llvm/Argument.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Argument.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Argument.h (original)
> +++ llvm/trunk/include/llvm/Argument.h Mon Dec 19 20:50:00 2011
> @@ -30,6 +30,7 @@
> /// 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>;
>
> Modified: llvm/trunk/include/llvm/CodeGen/JITCodeEmitter.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/JITCodeEmitter.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/CodeGen/JITCodeEmitter.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/JITCodeEmitter.h Mon Dec 19 20:50:00 2011
> @@ -51,6 +51,7 @@
> /// occurred, more memory is allocated, and we reemit the code into it.
> ///
> class JITCodeEmitter : public MachineCodeEmitter {
> + virtual void anchor();
> public:
> virtual ~JITCodeEmitter() {}
>
>
> Modified: llvm/trunk/include/llvm/CodeGen/LexicalScopes.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/LexicalScopes.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/CodeGen/LexicalScopes.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/LexicalScopes.h Mon Dec 19 20:50:00 2011
> @@ -153,6 +153,7 @@
> /// 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)
>
> Modified: llvm/trunk/include/llvm/CodeGen/MachineBranchProbabilityInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineBranchProbabilityInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/CodeGen/MachineBranchProbabilityInfo.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/MachineBranchProbabilityInfo.h Mon Dec 19 20:50:00 2011
> @@ -25,6 +25,7 @@
> 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
>
> Modified: llvm/trunk/include/llvm/CodeGen/MachineCodeEmitter.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineCodeEmitter.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/CodeGen/MachineCodeEmitter.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/MachineCodeEmitter.h Mon Dec 19 20:50:00 2011
> @@ -20,6 +20,8 @@
> #include "llvm/Support/DataTypes.h"
> #include "llvm/Support/DebugLoc.h"
>
> +#include <string>
> +
> namespace llvm {
>
> class MachineBasicBlock;
> @@ -49,6 +51,7 @@
> /// 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.
>
> Modified: llvm/trunk/include/llvm/CodeGen/MachineConstantPool.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineConstantPool.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/CodeGen/MachineConstantPool.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/MachineConstantPool.h Mon Dec 19 20:50:00 2011
> @@ -34,6 +34,7 @@
> /// Abstract base class for all machine specific constantpool value subclasses.
> ///
> class MachineConstantPoolValue {
> + virtual void anchor();
> Type *Ty;
>
> public:
>
> Modified: llvm/trunk/include/llvm/CodeGen/MachinePassRegistry.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachinePassRegistry.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/CodeGen/MachinePassRegistry.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/MachinePassRegistry.h Mon Dec 19 20:50:00 2011
> @@ -33,6 +33,7 @@
> ///
> //===----------------------------------------------------------------------===//
> class MachinePassRegistryListener {
> + virtual void anchor();
> public:
> MachinePassRegistryListener() {}
> virtual ~MachinePassRegistryListener() {}
>
> Modified: llvm/trunk/include/llvm/CodeGen/ScheduleDAG.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/ScheduleDAG.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/CodeGen/ScheduleDAG.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/ScheduleDAG.h Mon Dec 19 20:50:00 2011
> @@ -427,6 +427,7 @@
> /// implementation to decide.
> ///
> class SchedulingPriorityQueue {
> + virtual void anchor();
> unsigned CurCycle;
> bool HasReadyFilter;
> public:
>
> Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAGISel.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAGISel.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/CodeGen/SelectionDAGISel.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/SelectionDAGISel.h Mon Dec 19 20:50:00 2011
> @@ -181,6 +181,7 @@
> /// 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)
>
> Modified: llvm/trunk/include/llvm/Constant.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Constant.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Constant.h (original)
> +++ llvm/trunk/include/llvm/Constant.h Mon Dec 19 20:50:00 2011
> @@ -41,6 +41,7 @@
> 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)
>
> Modified: llvm/trunk/include/llvm/Constants.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Constants.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Constants.h (original)
> +++ llvm/trunk/include/llvm/Constants.h Mon Dec 19 20:50:00 2011
> @@ -45,6 +45,7 @@
> /// 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 @@
> ///
> 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;
>
> Modified: llvm/trunk/include/llvm/MC/MCAsmInfoCOFF.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCAsmInfoCOFF.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCAsmInfoCOFF.h (original)
> +++ llvm/trunk/include/llvm/MC/MCAsmInfoCOFF.h Mon Dec 19 20:50:00 2011
> @@ -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();
> };
>
> Modified: llvm/trunk/include/llvm/MC/MCAsmInfoDarwin.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCAsmInfoDarwin.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCAsmInfoDarwin.h (original)
> +++ llvm/trunk/include/llvm/MC/MCAsmInfoDarwin.h Mon Dec 19 20:50:00 2011
> @@ -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();
> };
> }
>
> Modified: llvm/trunk/include/llvm/MC/MCAssembler.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCAssembler.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCAssembler.h (original)
> +++ llvm/trunk/include/llvm/MC/MCAssembler.h Mon Dec 19 20:50:00 2011
> @@ -106,6 +106,7 @@
> };
>
> class MCDataFragment : public MCFragment {
> + virtual void anchor();
> SmallString<32> Contents;
>
> /// Fixups - The list of fixups in this fragment.
> @@ -160,6 +161,8 @@
> // 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 @@
> };
>
> class MCAlignFragment : public MCFragment {
> + virtual void anchor();
> +
> /// Alignment - The alignment to ensure, in bytes.
> unsigned Alignment;
>
> @@ -263,6 +268,8 @@
> };
>
> class MCFillFragment : public MCFragment {
> + virtual void anchor();
> +
> /// Value - Value to use for filling bytes.
> int64_t Value;
>
> @@ -300,6 +307,8 @@
> };
>
> class MCOrgFragment : public MCFragment {
> + virtual void anchor();
> +
> /// Offset - The offset this fragment should start at.
> const MCExpr *Offset;
>
> @@ -327,6 +336,8 @@
> };
>
> class MCLEBFragment : public MCFragment {
> + virtual void anchor();
> +
> /// Value - The value this fragment should contain.
> const MCExpr *Value;
>
> @@ -358,6 +369,8 @@
> };
>
> 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 @@
> };
>
> 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;
>
> Modified: llvm/trunk/include/llvm/Metadata.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Metadata.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Metadata.h (original)
> +++ llvm/trunk/include/llvm/Metadata.h Mon Dec 19 20:50:00 2011
> @@ -36,6 +36,7 @@
> /// 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;
>
> Modified: llvm/trunk/include/llvm/Object/Archive.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/Archive.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Object/Archive.h (original)
> +++ llvm/trunk/include/llvm/Object/Archive.h Mon Dec 19 20:50:00 2011
> @@ -22,6 +22,7 @@
> namespace object {
>
> class Archive : public Binary {
> + virtual void anchor();
> public:
> class Child {
> const Archive *Parent;
>
> Modified: llvm/trunk/include/llvm/Object/ObjectFile.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ObjectFile.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Object/ObjectFile.h (original)
> +++ llvm/trunk/include/llvm/Object/ObjectFile.h Mon Dec 19 20:50:00 2011
> @@ -232,7 +232,7 @@
> /// 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
>
>
> Modified: llvm/trunk/include/llvm/TableGen/Record.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/TableGen/Record.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/TableGen/Record.h (original)
> +++ llvm/trunk/include/llvm/TableGen/Record.h Mon Dec 19 20:50:00 2011
> @@ -68,6 +68,7 @@
>
> class RecTy {
> ListRecTy *ListTy;
> + virtual void anchor();
> public:
> RecTy() : ListTy(0) {}
> virtual ~RecTy() {}
> @@ -489,6 +490,7 @@
> 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 @@
> 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 @@
> 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 @@
>
> 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 @@
>
> 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);
>
> Modified: llvm/trunk/include/llvm/TableGen/TableGenAction.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/TableGen/TableGenAction.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/TableGen/TableGenAction.h (original)
> +++ llvm/trunk/include/llvm/TableGen/TableGenAction.h Mon Dec 19 20:50:00 2011
> @@ -21,6 +21,7 @@
> class RecordKeeper;
>
> class TableGenAction {
> + virtual void anchor();
> public:
> virtual ~TableGenAction() {}
>
>
> Modified: llvm/trunk/include/llvm/TableGen/TableGenBackend.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/TableGen/TableGenBackend.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/TableGen/TableGenBackend.h (original)
> +++ llvm/trunk/include/llvm/TableGen/TableGenBackend.h Mon Dec 19 20:50:00 2011
> @@ -24,6 +24,7 @@
> class RecordKeeper;
>
> struct TableGenBackend {
> + virtual void anchor();
> virtual ~TableGenBackend() {}
>
> // run - All TableGen backends should implement the run method, which should
>
> Modified: llvm/trunk/include/llvm/Target/TargetJITInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetJITInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Target/TargetJITInfo.h (original)
> +++ llvm/trunk/include/llvm/Target/TargetJITInfo.h Mon Dec 19 20:50:00 2011
> @@ -30,6 +30,7 @@
> /// TargetJITInfo - Target specific information required by the Just-In-Time
> /// code generator.
> class TargetJITInfo {
> + virtual void anchor();
> public:
> virtual ~TargetJITInfo() {}
>
>
> Modified: llvm/trunk/include/llvm/Target/TargetLibraryInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetLibraryInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Target/TargetLibraryInfo.h (original)
> +++ llvm/trunk/include/llvm/Target/TargetLibraryInfo.h Mon Dec 19 20:50:00 2011
> @@ -208,6 +208,7 @@
> /// 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];
>
> Modified: llvm/trunk/include/llvm/Target/TargetRegisterInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetRegisterInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Target/TargetRegisterInfo.h (original)
> +++ llvm/trunk/include/llvm/Target/TargetRegisterInfo.h Mon Dec 19 20:50:00 2011
> @@ -38,6 +38,7 @@
> 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;
>
> Modified: llvm/trunk/include/llvm/Transforms/Utils/SimplifyIndVar.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Utils/SimplifyIndVar.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Transforms/Utils/SimplifyIndVar.h (original)
> +++ llvm/trunk/include/llvm/Transforms/Utils/SimplifyIndVar.h Mon Dec 19 20:50:00 2011
> @@ -33,6 +33,7 @@
> /// 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;
>
> Modified: llvm/trunk/lib/Analysis/DebugInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/DebugInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Analysis/DebugInfo.cpp (original)
> +++ llvm/trunk/lib/Analysis/DebugInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -638,6 +638,32 @@
> }
>
> //===----------------------------------------------------------------------===//
> +// 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.
> //===----------------------------------------------------------------------===//
>
>
> Modified: llvm/trunk/lib/Analysis/DominanceFrontier.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/DominanceFrontier.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Analysis/DominanceFrontier.cpp (original)
> +++ llvm/trunk/lib/Analysis/DominanceFrontier.cpp Mon Dec 19 20:50:00 2011
> @@ -35,6 +35,8 @@
> };
> }
>
> +void DominanceFrontier::anchor() { }
> +
> const DominanceFrontier::DomSetType &
> DominanceFrontier::calculate(const DominatorTree &DT,
> const DomTreeNode *Node) {
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp Mon Dec 19 20:50:00 2011
> @@ -174,6 +174,7 @@
> }
> #endif
>
> +void DIEValue::anchor() { }
>
> #ifndef NDEBUG
> void DIEValue::dump() {
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h Mon Dec 19 20:50:00 2011
> @@ -195,6 +195,7 @@
> /// DIEValue - A debug information entry value.
> ///
> class DIEValue {
> + virtual void anchor();
> public:
> enum {
> isInteger,
>
> Added: llvm/trunk/lib/CodeGen/JITCodeEmitter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/JITCodeEmitter.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/JITCodeEmitter.cpp (added)
> +++ llvm/trunk/lib/CodeGen/JITCodeEmitter.cpp Mon Dec 19 20:50:00 2011
> @@ -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() { }
>
> Modified: llvm/trunk/lib/CodeGen/LexicalScopes.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LexicalScopes.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/LexicalScopes.cpp (original)
> +++ llvm/trunk/lib/CodeGen/LexicalScopes.cpp Mon Dec 19 20:50:00 2011
> @@ -311,6 +311,8 @@
> return Result;
> }
>
> +void LexicalScope::anchor() { }
> +
> /// dump - Print data structures.
> void LexicalScope::dump() const {
> #ifndef NDEBUG
>
> Modified: llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp (original)
> +++ llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp Mon Dec 19 20:50:00 2011
> @@ -29,6 +29,8 @@
> 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) {
>
> Modified: llvm/trunk/lib/CodeGen/LiveRangeEdit.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveRangeEdit.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/LiveRangeEdit.h (original)
> +++ llvm/trunk/lib/CodeGen/LiveRangeEdit.h Mon Dec 19 20:50:00 2011
> @@ -33,7 +33,9 @@
> 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) {}
>
>
> Modified: llvm/trunk/lib/CodeGen/MachineBranchProbabilityInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineBranchProbabilityInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/MachineBranchProbabilityInfo.cpp (original)
> +++ llvm/trunk/lib/CodeGen/MachineBranchProbabilityInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -26,6 +26,8 @@
>
> 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
>
> Added: llvm/trunk/lib/CodeGen/MachineCodeEmitter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineCodeEmitter.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/MachineCodeEmitter.cpp (added)
> +++ llvm/trunk/lib/CodeGen/MachineCodeEmitter.cpp Mon Dec 19 20:50:00 2011
> @@ -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() { }
>
> Modified: llvm/trunk/lib/CodeGen/MachineFunction.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineFunction.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/MachineFunction.cpp (original)
> +++ llvm/trunk/lib/CodeGen/MachineFunction.cpp Mon Dec 19 20:50:00 2011
> @@ -619,6 +619,8 @@
> // MachineConstantPool implementation
> //===----------------------------------------------------------------------===//
>
> +void MachineConstantPoolValue::anchor() { }
> +
> Type *MachineConstantPoolEntry::getType() const {
> if (isMachineConstantPoolEntry())
> return Val.MachineCPVal->getType();
>
> Modified: llvm/trunk/lib/CodeGen/MachinePassRegistry.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachinePassRegistry.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/MachinePassRegistry.cpp (original)
> +++ llvm/trunk/lib/CodeGen/MachinePassRegistry.cpp Mon Dec 19 20:50:00 2011
> @@ -16,6 +16,7 @@
>
> using namespace llvm;
>
> +void MachinePassRegistryListener::anchor() { }
>
> /// Add - Adds a function pass to the registration list.
> ///
>
> Modified: llvm/trunk/lib/CodeGen/ScheduleDAG.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/ScheduleDAG.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/ScheduleDAG.cpp (original)
> +++ llvm/trunk/lib/CodeGen/ScheduleDAG.cpp Mon Dec 19 20:50:00 2011
> @@ -31,6 +31,8 @@
> cl::desc("Stress test instruction scheduling"));
> #endif
>
> +void SchedulingPriorityQueue::anchor() { }
> +
> ScheduleDAG::ScheduleDAG(MachineFunction &mf)
> : TM(mf.getTarget()),
> TII(TM.getInstrInfo()),
>
> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp (original)
> +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Mon Dec 19 20:50:00 2011
> @@ -262,6 +262,8 @@
> // SelectionDAGISel code
> //===----------------------------------------------------------------------===//
>
> +void SelectionDAGISel::ISelUpdater::anchor() { }
> +
> SelectionDAGISel::SelectionDAGISel(const TargetMachine &tm,
> CodeGenOpt::Level OL) :
> MachineFunctionPass(ID), TM(tm), TLI(*tm.getTargetLowering()),
>
> Modified: llvm/trunk/lib/CodeGen/Spiller.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/Spiller.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/Spiller.cpp (original)
> +++ llvm/trunk/lib/CodeGen/Spiller.cpp Mon Dec 19 20:50:00 2011
> @@ -185,6 +185,8 @@
>
> } // end anonymous namespace
>
> +void Spiller::anchor() { }
> +
> llvm::Spiller* llvm::createSpiller(MachineFunctionPass &pass,
> MachineFunction &mf,
> VirtRegMap &vrm) {
>
> Modified: llvm/trunk/lib/CodeGen/Spiller.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/Spiller.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/Spiller.h (original)
> +++ llvm/trunk/lib/CodeGen/Spiller.h Mon Dec 19 20:50:00 2011
> @@ -22,6 +22,7 @@
> /// Implementations are utility classes which insert spill or remat code on
> /// demand.
> class Spiller {
> + virtual void anchor();
> public:
> virtual ~Spiller() = 0;
>
>
> Modified: llvm/trunk/lib/DebugInfo/DWARFContext.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARFContext.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/DebugInfo/DWARFContext.cpp (original)
> +++ llvm/trunk/lib/DebugInfo/DWARFContext.cpp Mon Dec 19 20:50:00 2011
> @@ -165,3 +165,5 @@
>
> return DILineInfo(fileName.c_str(), row.Line, row.Column);
> }
> +
> +void DWARFContextInMemory::anchor() { }
>
> Modified: llvm/trunk/lib/DebugInfo/DWARFContext.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARFContext.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/DebugInfo/DWARFContext.h (original)
> +++ llvm/trunk/lib/DebugInfo/DWARFContext.h Mon Dec 19 20:50:00 2011
> @@ -86,6 +86,7 @@
> /// 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;
>
> Added: llvm/trunk/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.cpp (added)
> +++ llvm/trunk/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.cpp Mon Dec 19 20:50:00 2011
> @@ -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() { }
>
> Modified: llvm/trunk/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.h (original)
> +++ llvm/trunk/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.h Mon Dec 19 20:50:00 2011
> @@ -21,6 +21,7 @@
> // 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.
>
> Modified: llvm/trunk/lib/MC/MCAsmInfoCOFF.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmInfoCOFF.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCAsmInfoCOFF.cpp (original)
> +++ llvm/trunk/lib/MC/MCAsmInfoCOFF.cpp Mon Dec 19 20:50:00 2011
> @@ -16,6 +16,8 @@
> #include "llvm/ADT/SmallVector.h"
> using namespace llvm;
>
> +void MCAsmInfoCOFF::anchor() { }
> +
> MCAsmInfoCOFF::MCAsmInfoCOFF() {
> GlobalPrefix = "_";
> COMMDirectiveAlignmentIsInBytes = false;
> @@ -39,10 +41,14 @@
> SupportsDataRegions = false;
> }
>
> +void MCAsmInfoMicrosoft::anchor() { }
> +
> MCAsmInfoMicrosoft::MCAsmInfoMicrosoft() {
> AllowQuotesInName = true;
> }
>
> +void MCAsmInfoGNUCOFF::anchor() { }
> +
> MCAsmInfoGNUCOFF::MCAsmInfoGNUCOFF() {
>
> }
>
> Modified: llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp (original)
> +++ llvm/trunk/lib/MC/MCAsmInfoDarwin.cpp Mon Dec 19 20:50:00 2011
> @@ -18,6 +18,8 @@
> #include "llvm/MC/MCStreamer.h"
> using namespace llvm;
>
> +void MCAsmInfoDarwin::anchor() { }
> +
> MCAsmInfoDarwin::MCAsmInfoDarwin() {
> // Common settings for all Darwin targets.
> // Syntax:
>
> Modified: llvm/trunk/lib/MC/MCAssembler.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAssembler.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCAssembler.cpp (original)
> +++ llvm/trunk/lib/MC/MCAssembler.cpp Mon Dec 19 20:50:00 2011
> @@ -972,3 +972,13 @@
> }
> 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() { }
>
> Modified: llvm/trunk/lib/Object/Archive.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/Archive.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Object/Archive.cpp (original)
> +++ llvm/trunk/lib/Object/Archive.cpp Mon Dec 19 20:50:00 2011
> @@ -74,6 +74,8 @@
> return false;
> }
>
> +void Archive::anchor() { }
> +
> Archive::Child Archive::Child::getNext() const {
> size_t SpaceToSkip = sizeof(ArchiveMemberHeader) +
> ToHeader(Data.data())->getSize();
>
> Modified: llvm/trunk/lib/Object/ObjectFile.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/ObjectFile.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Object/ObjectFile.cpp (original)
> +++ llvm/trunk/lib/Object/ObjectFile.cpp Mon Dec 19 20:50:00 2011
> @@ -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) {
> }
>
> Added: llvm/trunk/lib/Support/IntrusiveRefCntPtr.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/IntrusiveRefCntPtr.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Support/IntrusiveRefCntPtr.cpp (added)
> +++ llvm/trunk/lib/Support/IntrusiveRefCntPtr.cpp Mon Dec 19 20:50:00 2011
> @@ -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() { }
>
> Modified: llvm/trunk/lib/TableGen/Record.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/TableGen/Record.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/TableGen/Record.cpp (original)
> +++ llvm/trunk/lib/TableGen/Record.cpp Mon Dec 19 20:50:00 2011
> @@ -81,6 +81,7 @@
> CodeRecTy CodeRecTy::Shared;
> DagRecTy DagRecTy::Shared;
>
> +void RecTy::anchor() { }
> void RecTy::dump() const { print(errs()); }
>
> ListRecTy *RecTy::getListTy() {
> @@ -444,13 +445,18 @@
> // 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 @@
> 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 @@
> return I;
> }
>
> +void CodeInit::anchor() { }
> +
> CodeInit *CodeInit::get(const std::string &V) {
> typedef StringMap<CodeInit *> Pool;
> static Pool ThePool;
>
> Added: llvm/trunk/lib/TableGen/TableGenAction.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/TableGen/TableGenAction.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/TableGen/TableGenAction.cpp (added)
> +++ llvm/trunk/lib/TableGen/TableGenAction.cpp Mon Dec 19 20:50:00 2011
> @@ -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() { }
> +
>
> Modified: llvm/trunk/lib/TableGen/TableGenBackend.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/TableGen/TableGenBackend.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/TableGen/TableGenBackend.cpp (original)
> +++ llvm/trunk/lib/TableGen/TableGenBackend.cpp Mon Dec 19 20:50:00 2011
> @@ -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 -------------------------------------*-"
>
> Added: llvm/trunk/lib/Target/ARM/ARMMachineFunctionInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMMachineFunctionInfo.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMMachineFunctionInfo.cpp (added)
> +++ llvm/trunk/lib/Target/ARM/ARMMachineFunctionInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -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() { }
>
> Modified: llvm/trunk/lib/Target/ARM/ARMMachineFunctionInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMMachineFunctionInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMMachineFunctionInfo.h (original)
> +++ llvm/trunk/lib/Target/ARM/ARMMachineFunctionInfo.h Mon Dec 19 20:50:00 2011
> @@ -25,6 +25,7 @@
> /// 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.
>
> Modified: llvm/trunk/lib/Target/ARM/ARMRegisterInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMRegisterInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMRegisterInfo.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/ARMRegisterInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -16,6 +16,8 @@
> #include "ARMRegisterInfo.h"
> using namespace llvm;
>
> +void ARMRegisterInfo::anchor() { }
> +
> ARMRegisterInfo::ARMRegisterInfo(const ARMBaseInstrInfo &tii,
> const ARMSubtarget &sti)
> : ARMBaseRegisterInfo(tii, sti) {
>
> Modified: llvm/trunk/lib/Target/ARM/ARMRegisterInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMRegisterInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMRegisterInfo.h (original)
> +++ llvm/trunk/lib/Target/ARM/ARMRegisterInfo.h Mon Dec 19 20:50:00 2011
> @@ -24,6 +24,7 @@
> class Type;
>
> struct ARMRegisterInfo : public ARMBaseRegisterInfo {
> + virtual void anchor();
> public:
> ARMRegisterInfo(const ARMBaseInstrInfo &tii, const ARMSubtarget &STI);
> };
>
> Modified: llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp Mon Dec 19 20:50:00 2011
> @@ -34,6 +34,7 @@
> RegisterTargetMachine<ThumbTargetMachine> Y(TheThumbTarget);
> }
>
> +
> /// TargetMachine ctor - Create an ARM architecture model.
> ///
> ARMBaseTargetMachine::ARMBaseTargetMachine(const Target &T, StringRef TT,
> @@ -50,6 +51,8 @@
> 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 @@
> "support ARM mode execution!");
> }
>
> +void ThumbTargetMachine::anchor() { }
> +
> ThumbTargetMachine::ThumbTargetMachine(const Target &T, StringRef TT,
> StringRef CPU, StringRef FS,
> const TargetOptions &Options,
>
> Modified: llvm/trunk/lib/Target/ARM/ARMTargetMachine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMTargetMachine.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMTargetMachine.h (original)
> +++ llvm/trunk/lib/Target/ARM/ARMTargetMachine.h Mon Dec 19 20:50:00 2011
> @@ -63,6 +63,7 @@
> /// 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 @@
> /// 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
>
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -48,6 +48,8 @@
> 0,0
> };
>
> +void ARMMCAsmInfoDarwin::anchor() { }
> +
> ARMMCAsmInfoDarwin::ARMMCAsmInfoDarwin() {
> AsmTransCBE = arm_asm_table;
> Data64bitsDirective = 0;
> @@ -61,6 +63,8 @@
> ExceptionsType = ExceptionHandling::SjLj;
> }
>
> +void ARMELFMCAsmInfo::anchor() { }
> +
> ARMELFMCAsmInfo::ARMELFMCAsmInfo() {
> // ".comm align is in bytes but .align is pow-2."
> AlignmentIsInBytes = false;
>
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h Mon Dec 19 20:50:00 2011
> @@ -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();
> };
>
>
> Modified: llvm/trunk/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.cpp (original)
> +++ llvm/trunk/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -14,6 +14,8 @@
> #include "SPUMCAsmInfo.h"
> using namespace llvm;
>
> +void SPULinuxMCAsmInfo::anchor() { }
> +
> SPULinuxMCAsmInfo::SPULinuxMCAsmInfo(const Target &T, StringRef TT) {
> IsLittleEndian = false;
>
>
> Modified: llvm/trunk/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.h (original)
> +++ llvm/trunk/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.h Mon Dec 19 20:50:00 2011
> @@ -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
>
> Added: llvm/trunk/lib/Target/CellSPU/SPUMachineFunction.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPUMachineFunction.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/CellSPU/SPUMachineFunction.cpp (added)
> +++ llvm/trunk/lib/Target/CellSPU/SPUMachineFunction.cpp Mon Dec 19 20:50:00 2011
> @@ -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() { }
>
> Modified: llvm/trunk/lib/Target/CellSPU/SPUMachineFunction.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPUMachineFunction.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/CellSPU/SPUMachineFunction.h (original)
> +++ llvm/trunk/lib/Target/CellSPU/SPUMachineFunction.h Mon Dec 19 20:50:00 2011
> @@ -21,7 +21,8 @@
> /// 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;
>
> Added: llvm/trunk/lib/Target/MBlaze/MBlazeMachineFunction.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MBlaze/MBlazeMachineFunction.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/MBlaze/MBlazeMachineFunction.cpp (added)
> +++ llvm/trunk/lib/Target/MBlaze/MBlazeMachineFunction.cpp Mon Dec 19 20:50:00 2011
> @@ -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() { }
>
> Modified: llvm/trunk/lib/Target/MBlaze/MBlazeMachineFunction.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MBlaze/MBlazeMachineFunction.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/MBlaze/MBlazeMachineFunction.h (original)
> +++ llvm/trunk/lib/Target/MBlaze/MBlazeMachineFunction.h Mon Dec 19 20:50:00 2011
> @@ -25,8 +25,8 @@
> /// 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;
>
> Modified: llvm/trunk/lib/Target/MBlaze/MCTargetDesc/MBlazeMCAsmInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MBlaze/MCTargetDesc/MBlazeMCAsmInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/MBlaze/MCTargetDesc/MBlazeMCAsmInfo.cpp (original)
> +++ llvm/trunk/lib/Target/MBlaze/MCTargetDesc/MBlazeMCAsmInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -14,6 +14,8 @@
> #include "MBlazeMCAsmInfo.h"
> using namespace llvm;
>
> +void MBlazeMCAsmInfo::anchor() { }
> +
> MBlazeMCAsmInfo::MBlazeMCAsmInfo() {
> IsLittleEndian = false;
> StackGrowsUp = false;
>
> Modified: llvm/trunk/lib/Target/MBlaze/MCTargetDesc/MBlazeMCAsmInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MBlaze/MCTargetDesc/MBlazeMCAsmInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/MBlaze/MCTargetDesc/MBlazeMCAsmInfo.h (original)
> +++ llvm/trunk/lib/Target/MBlaze/MCTargetDesc/MBlazeMCAsmInfo.h Mon Dec 19 20:50:00 2011
> @@ -21,6 +21,7 @@
> class Target;
>
> class MBlazeMCAsmInfo : public MCAsmInfo {
> + virtual void anchor();
> public:
> explicit MBlazeMCAsmInfo();
> };
>
> Modified: llvm/trunk/lib/Target/MSP430/MCTargetDesc/MSP430MCAsmInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/MCTargetDesc/MSP430MCAsmInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/MSP430/MCTargetDesc/MSP430MCAsmInfo.cpp (original)
> +++ llvm/trunk/lib/Target/MSP430/MCTargetDesc/MSP430MCAsmInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -14,6 +14,8 @@
> #include "MSP430MCAsmInfo.h"
> using namespace llvm;
>
> +void MSP430MCAsmInfo::anchor() { }
> +
> MSP430MCAsmInfo::MSP430MCAsmInfo(const Target &T, StringRef TT) {
> PointerSize = 2;
>
>
> Modified: llvm/trunk/lib/Target/MSP430/MCTargetDesc/MSP430MCAsmInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/MCTargetDesc/MSP430MCAsmInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/MSP430/MCTargetDesc/MSP430MCAsmInfo.h (original)
> +++ llvm/trunk/lib/Target/MSP430/MCTargetDesc/MSP430MCAsmInfo.h Mon Dec 19 20:50:00 2011
> @@ -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);
> };
>
>
> Added: llvm/trunk/lib/Target/MSP430/MSP430MachineFunctionInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/MSP430MachineFunctionInfo.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/MSP430/MSP430MachineFunctionInfo.cpp (added)
> +++ llvm/trunk/lib/Target/MSP430/MSP430MachineFunctionInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -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() { }
>
> Modified: llvm/trunk/lib/Target/MSP430/MSP430MachineFunctionInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/MSP430MachineFunctionInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/MSP430/MSP430MachineFunctionInfo.h (original)
> +++ llvm/trunk/lib/Target/MSP430/MSP430MachineFunctionInfo.h Mon Dec 19 20:50:00 2011
> @@ -21,6 +21,8 @@
> /// 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;
>
> Modified: llvm/trunk/lib/Target/MSP430/MSP430Subtarget.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/MSP430Subtarget.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/MSP430/MSP430Subtarget.cpp (original)
> +++ llvm/trunk/lib/Target/MSP430/MSP430Subtarget.cpp Mon Dec 19 20:50:00 2011
> @@ -21,6 +21,8 @@
>
> using namespace llvm;
>
> +void MSP430Subtarget::anchor() { }
> +
> MSP430Subtarget::MSP430Subtarget(const std::string &TT,
> const std::string &CPU,
> const std::string &FS) :
>
> Modified: llvm/trunk/lib/Target/MSP430/MSP430Subtarget.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/MSP430Subtarget.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/MSP430/MSP430Subtarget.h (original)
> +++ llvm/trunk/lib/Target/MSP430/MSP430Subtarget.h Mon Dec 19 20:50:00 2011
> @@ -25,6 +25,7 @@
> class StringRef;
>
> class MSP430Subtarget : public MSP430GenSubtargetInfo {
> + virtual void anchor();
> bool ExtendedInsts;
> public:
> /// This constructor initializes the data members to match that
>
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -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) ||
>
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.h (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.h Mon Dec 19 20:50:00 2011
> @@ -21,6 +21,7 @@
> class Target;
>
> class MipsMCAsmInfo : public MCAsmInfo {
> + virtual void anchor();
> public:
> explicit MipsMCAsmInfo(const Target &T, StringRef TT);
> };
>
> Added: llvm/trunk/lib/Target/Mips/MipsMachineFunction.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsMachineFunction.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsMachineFunction.cpp (added)
> +++ llvm/trunk/lib/Target/Mips/MipsMachineFunction.cpp Mon Dec 19 20:50:00 2011
> @@ -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() { }
>
> Modified: llvm/trunk/lib/Target/Mips/MipsMachineFunction.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsMachineFunction.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsMachineFunction.h (original)
> +++ llvm/trunk/lib/Target/Mips/MipsMachineFunction.h Mon Dec 19 20:50:00 2011
> @@ -25,8 +25,8 @@
> /// 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
>
> Modified: llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MipsSubtarget.cpp Mon Dec 19 20:50:00 2011
> @@ -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),
>
> Modified: llvm/trunk/lib/Target/Mips/MipsSubtarget.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSubtarget.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsSubtarget.h (original)
> +++ llvm/trunk/lib/Target/Mips/MipsSubtarget.h Mon Dec 19 20:50:00 2011
> @@ -25,6 +25,7 @@
> class StringRef;
>
> class MipsSubtarget : public MipsGenSubtargetInfo {
> + virtual void anchor();
>
> public:
> // NOTE: O64 will not be supported.
>
> Modified: llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp Mon Dec 19 20:50:00 2011
> @@ -52,6 +52,8 @@
> 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 @@
> 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 @@
> 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 @@
> 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,
>
> Modified: llvm/trunk/lib/Target/Mips/MipsTargetMachine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsTargetMachine.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsTargetMachine.h (original)
> +++ llvm/trunk/lib/Target/Mips/MipsTargetMachine.h Mon Dec 19 20:50:00 2011
> @@ -80,6 +80,7 @@
> /// 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 @@
> /// 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 @@
> /// 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 @@
> /// Mips64elTargetMachine - Mips64 little endian target machine.
> ///
> class Mips64elTargetMachine : public MipsTargetMachine {
> + virtual void anchor();
> public:
> Mips64elTargetMachine(const Target &T, StringRef TT,
> StringRef CPU, StringRef FS,
>
> Modified: llvm/trunk/lib/Target/PTX/MCTargetDesc/PTXMCAsmInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PTX/MCTargetDesc/PTXMCAsmInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PTX/MCTargetDesc/PTXMCAsmInfo.cpp (original)
> +++ llvm/trunk/lib/Target/PTX/MCTargetDesc/PTXMCAsmInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -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)
>
> Modified: llvm/trunk/lib/Target/PTX/MCTargetDesc/PTXMCAsmInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PTX/MCTargetDesc/PTXMCAsmInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PTX/MCTargetDesc/PTXMCAsmInfo.h (original)
> +++ llvm/trunk/lib/Target/PTX/MCTargetDesc/PTXMCAsmInfo.h Mon Dec 19 20:50:00 2011
> @@ -20,7 +20,9 @@
> 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
>
> Added: llvm/trunk/lib/Target/PTX/PTXMachineFunctionInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PTX/PTXMachineFunctionInfo.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/PTX/PTXMachineFunctionInfo.cpp (added)
> +++ llvm/trunk/lib/Target/PTX/PTXMachineFunctionInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -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() { }
>
> Modified: llvm/trunk/lib/Target/PTX/PTXMachineFunctionInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PTX/PTXMachineFunctionInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PTX/PTXMachineFunctionInfo.h (original)
> +++ llvm/trunk/lib/Target/PTX/PTXMachineFunctionInfo.h Mon Dec 19 20:50:00 2011
> @@ -30,7 +30,7 @@
> /// 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;
>
> Modified: llvm/trunk/lib/Target/PTX/PTXSubtarget.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PTX/PTXSubtarget.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PTX/PTXSubtarget.cpp (original)
> +++ llvm/trunk/lib/Target/PTX/PTXSubtarget.cpp Mon Dec 19 20:50:00 2011
> @@ -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),
>
> Modified: llvm/trunk/lib/Target/PTX/PTXSubtarget.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PTX/PTXSubtarget.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PTX/PTXSubtarget.h (original)
> +++ llvm/trunk/lib/Target/PTX/PTXSubtarget.h Mon Dec 19 20:50:00 2011
> @@ -23,6 +23,7 @@
> class StringRef;
>
> class PTXSubtarget : public PTXGenSubtargetInfo {
> + virtual void anchor();
> public:
>
> /**
>
> Modified: llvm/trunk/lib/Target/PTX/PTXTargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PTX/PTXTargetMachine.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PTX/PTXTargetMachine.cpp (original)
> +++ llvm/trunk/lib/Target/PTX/PTXTargetMachine.cpp Mon Dec 19 20:50:00 2011
> @@ -85,6 +85,8 @@
> TLInfo(*this) {
> }
>
> +void PTX32TargetMachine::anchor() { }
> +
> PTX32TargetMachine::PTX32TargetMachine(const Target &T, StringRef TT,
> StringRef CPU, StringRef FS,
> const TargetOptions &Options,
> @@ -93,6 +95,8 @@
> : 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,
>
> Modified: llvm/trunk/lib/Target/PTX/PTXTargetMachine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PTX/PTXTargetMachine.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PTX/PTXTargetMachine.h (original)
> +++ llvm/trunk/lib/Target/PTX/PTXTargetMachine.h Mon Dec 19 20:50:00 2011
> @@ -91,6 +91,7 @@
>
>
> class PTX32TargetMachine : public PTXTargetMachine {
> + virtual void anchor();
> public:
>
> PTX32TargetMachine(const Target &T, StringRef TT,
> @@ -100,6 +101,7 @@
> }; // class PTX32TargetMachine
>
> class PTX64TargetMachine : public PTXTargetMachine {
> + virtual void anchor();
> public:
>
> PTX64TargetMachine(const Target &T, StringRef TT,
>
> Modified: llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp (original)
> +++ llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -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 @@
> SupportsDebugInformation= true; // Debug information.
> }
>
> +void PPCLinuxMCAsmInfo::anchor() { }
> +
> PPCLinuxMCAsmInfo::PPCLinuxMCAsmInfo(bool is64Bit) {
> if (is64Bit)
> PointerSize = 8;
>
> Modified: llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.h (original)
> +++ llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.h Mon Dec 19 20:50:00 2011
> @@ -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);
> };
>
>
> Added: llvm/trunk/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp (added)
> +++ llvm/trunk/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -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() { }
> +
>
> Modified: llvm/trunk/lib/Target/PowerPC/PPCMachineFunctionInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCMachineFunctionInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PowerPC/PPCMachineFunctionInfo.h (original)
> +++ llvm/trunk/lib/Target/PowerPC/PPCMachineFunctionInfo.h Mon Dec 19 20:50:00 2011
> @@ -21,7 +21,8 @@
> /// 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.)
>
> Modified: llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.cpp (original)
> +++ llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.cpp Mon Dec 19 20:50:00 2011
> @@ -44,6 +44,8 @@
> /// 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 @@
> : PPCTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, false) {
> }
>
> +void PPC64TargetMachine::anchor() { }
>
> PPC64TargetMachine::PPC64TargetMachine(const Target &T, StringRef TT,
> StringRef CPU, StringRef FS,
>
> Modified: llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.h (original)
> +++ llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.h Mon Dec 19 20:50:00 2011
> @@ -77,6 +77,7 @@
> /// 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 @@
> /// 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,
>
> Modified: llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp (original)
> +++ llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -16,6 +16,8 @@
>
> using namespace llvm;
>
> +void SparcELFMCAsmInfo::anchor() { }
> +
> SparcELFMCAsmInfo::SparcELFMCAsmInfo(const Target &T, StringRef TT) {
> IsLittleEndian = false;
> Triple TheTriple(TT);
>
> Modified: llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.h (original)
> +++ llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.h Mon Dec 19 20:50:00 2011
> @@ -20,7 +20,9 @@
> namespace llvm {
> class Target;
>
> - struct SparcELFMCAsmInfo : public MCAsmInfo {
> + class SparcELFMCAsmInfo : public MCAsmInfo {
> + virtual void anchor();
> + public:
> explicit SparcELFMCAsmInfo(const Target &T, StringRef TT);
> };
>
>
> Added: llvm/trunk/lib/Target/Sparc/SparcMachineFunctionInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/SparcMachineFunctionInfo.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/SparcMachineFunctionInfo.cpp (added)
> +++ llvm/trunk/lib/Target/Sparc/SparcMachineFunctionInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -0,0 +1,14 @@
> +//==- SparcMachineFunctionInfo.cpp - Sparc 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 "SparcMachineFunctionInfo.h"
> +
> +using namespace llvm;
> +
> +void SparcMachineFunctionInfo::anchor() { }
>
> Modified: llvm/trunk/lib/Target/Sparc/SparcMachineFunctionInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/SparcMachineFunctionInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/SparcMachineFunctionInfo.h (original)
> +++ llvm/trunk/lib/Target/Sparc/SparcMachineFunctionInfo.h Mon Dec 19 20:50:00 2011
> @@ -18,6 +18,7 @@
> namespace llvm {
>
> class SparcMachineFunctionInfo : public MachineFunctionInfo {
> + virtual void anchor();
> private:
> unsigned GlobalBaseReg;
>
>
> Modified: llvm/trunk/lib/Target/Sparc/SparcSubtarget.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/SparcSubtarget.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/SparcSubtarget.cpp (original)
> +++ llvm/trunk/lib/Target/Sparc/SparcSubtarget.cpp Mon Dec 19 20:50:00 2011
> @@ -21,6 +21,8 @@
>
> using namespace llvm;
>
> +void SparcSubtarget::anchor() { }
> +
> SparcSubtarget::SparcSubtarget(const std::string &TT, const std::string &CPU,
> const std::string &FS, bool is64Bit) :
> SparcGenSubtargetInfo(TT, CPU, FS),
>
> Modified: llvm/trunk/lib/Target/Sparc/SparcSubtarget.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/SparcSubtarget.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/SparcSubtarget.h (original)
> +++ llvm/trunk/lib/Target/Sparc/SparcSubtarget.h Mon Dec 19 20:50:00 2011
> @@ -24,6 +24,7 @@
> class StringRef;
>
> class SparcSubtarget : public SparcGenSubtargetInfo {
> + virtual void anchor();
> bool IsV9;
> bool V8DeprecatedInsts;
> bool IsVIS;
>
> Modified: llvm/trunk/lib/Target/Sparc/SparcTargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/SparcTargetMachine.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/SparcTargetMachine.cpp (original)
> +++ llvm/trunk/lib/Target/Sparc/SparcTargetMachine.cpp Mon Dec 19 20:50:00 2011
> @@ -51,6 +51,8 @@
> return true;
> }
>
> +void SparcV8TargetMachine::anchor() { }
> +
> SparcV8TargetMachine::SparcV8TargetMachine(const Target &T,
> StringRef TT, StringRef CPU,
> StringRef FS,
> @@ -61,6 +63,8 @@
> : SparcTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, false) {
> }
>
> +void SparcV9TargetMachine::anchor() { }
> +
> SparcV9TargetMachine::SparcV9TargetMachine(const Target &T,
> StringRef TT, StringRef CPU,
> StringRef FS,
>
> Modified: llvm/trunk/lib/Target/Sparc/SparcTargetMachine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/SparcTargetMachine.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/SparcTargetMachine.h (original)
> +++ llvm/trunk/lib/Target/Sparc/SparcTargetMachine.h Mon Dec 19 20:50:00 2011
> @@ -62,6 +62,7 @@
> /// SparcV8TargetMachine - Sparc 32-bit target machine
> ///
> class SparcV8TargetMachine : public SparcTargetMachine {
> + virtual void anchor();
> public:
> SparcV8TargetMachine(const Target &T, StringRef TT,
> StringRef CPU, StringRef FS,
> @@ -73,6 +74,7 @@
> /// SparcV9TargetMachine - Sparc 64-bit target machine
> ///
> class SparcV9TargetMachine : public SparcTargetMachine {
> + virtual void anchor();
> public:
> SparcV9TargetMachine(const Target &T, StringRef TT,
> StringRef CPU, StringRef FS,
>
> Added: llvm/trunk/lib/Target/TargetJITInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetJITInfo.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/TargetJITInfo.cpp (added)
> +++ llvm/trunk/lib/Target/TargetJITInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -0,0 +1,14 @@
> +//===- Target/TargetJITInfo.h - Target Information for JIT ------*- C++ -*-===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +#include "llvm/Target/TargetJITInfo.h"
> +
> +using namespace llvm;
> +
> +void TargetJITInfo::anchor() { }
>
> Modified: llvm/trunk/lib/Target/TargetLibraryInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetLibraryInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/TargetLibraryInfo.cpp (original)
> +++ llvm/trunk/lib/Target/TargetLibraryInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -20,6 +20,8 @@
> "Target Library Information", false, true)
> char TargetLibraryInfo::ID = 0;
>
> +void TargetLibraryInfo::anchor() { }
> +
> const char* TargetLibraryInfo::StandardNames[LibFunc::NumLibFuncs] =
> {
> "acos",
>
> Modified: llvm/trunk/lib/Target/TargetRegisterInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetRegisterInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/TargetRegisterInfo.cpp (original)
> +++ llvm/trunk/lib/Target/TargetRegisterInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -18,6 +18,8 @@
>
> using namespace llvm;
>
> +void TargetRegisterClass::anchor() { }
> +
> TargetRegisterInfo::TargetRegisterInfo(const TargetRegisterInfoDesc *ID,
> regclass_iterator RCB, regclass_iterator RCE,
> const char *const *subregindexnames)
>
> Modified: llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp (original)
> +++ llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp Mon Dec 19 20:50:00 2011
> @@ -79,6 +79,12 @@
> return instInfoX86;
> }
>
> +void X86_16Disassembler::anchor() { }
> +
> +void X86_32Disassembler::anchor() { }
> +
> +void X86_64Disassembler::anchor() { }
> +
> /// regionReader - a callback function that wraps the readByte method from
> /// MemoryObject.
> ///
>
> Modified: llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.h (original)
> +++ llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.h Mon Dec 19 20:50:00 2011
> @@ -128,6 +128,7 @@
>
> /// X86_16Disassembler - 16-bit X86 disassembler.
> class X86_16Disassembler : public X86GenericDisassembler {
> + virtual void anchor();
> public:
> X86_16Disassembler(const MCSubtargetInfo &STI) :
> X86GenericDisassembler(STI, MODE_16BIT) {
> @@ -136,6 +137,7 @@
>
> /// X86_16Disassembler - 32-bit X86 disassembler.
> class X86_32Disassembler : public X86GenericDisassembler {
> + virtual void anchor();
> public:
> X86_32Disassembler(const MCSubtargetInfo &STI) :
> X86GenericDisassembler(STI, MODE_32BIT) {
> @@ -144,6 +146,7 @@
>
> /// X86_16Disassembler - 64-bit X86 disassembler.
> class X86_64Disassembler : public X86GenericDisassembler {
> + virtual void anchor();
> public:
> X86_64Disassembler(const MCSubtargetInfo &STI) :
> X86GenericDisassembler(STI, MODE_64BIT) {
>
> Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp (original)
> +++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -48,6 +48,8 @@
> "{cc}", "cc",
> 0,0};
>
> +void X86MCAsmInfoDarwin::anchor() { }
> +
> X86MCAsmInfoDarwin::X86MCAsmInfoDarwin(const Triple &T) {
> bool is64Bit = T.getArch() == Triple::x86_64;
> if (is64Bit)
> @@ -80,6 +82,8 @@
> : X86MCAsmInfoDarwin(Triple) {
> }
>
> +void X86ELFMCAsmInfo::anchor() { }
> +
> X86ELFMCAsmInfo::X86ELFMCAsmInfo(const Triple &T) {
> if (T.getArch() == Triple::x86_64)
> PointerSize = 8;
> @@ -125,6 +129,8 @@
> 0, SectionKind::getMetadata());
> }
>
> +void X86MCAsmInfoMicrosoft::anchor() { }
> +
> X86MCAsmInfoMicrosoft::X86MCAsmInfoMicrosoft(const Triple &Triple) {
> if (Triple.getArch() == Triple::x86_64) {
> GlobalPrefix = "";
> @@ -137,6 +143,8 @@
> TextAlignFillValue = 0x90;
> }
>
> +void X86MCAsmInfoGNUCOFF::anchor() { }
> +
> X86MCAsmInfoGNUCOFF::X86MCAsmInfoGNUCOFF(const Triple &Triple) {
> if (Triple.getArch() == Triple::x86_64) {
> GlobalPrefix = "";
>
> Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.h (original)
> +++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.h Mon Dec 19 20:50:00 2011
> @@ -21,7 +21,9 @@
> namespace llvm {
> class Triple;
>
> - struct X86MCAsmInfoDarwin : public MCAsmInfoDarwin {
> + class X86MCAsmInfoDarwin : public MCAsmInfoDarwin {
> + virtual void anchor();
> + public:
> explicit X86MCAsmInfoDarwin(const Triple &Triple);
> };
>
> @@ -33,16 +35,22 @@
> MCStreamer &Streamer) const;
> };
>
> - struct X86ELFMCAsmInfo : public MCAsmInfo {
> + class X86ELFMCAsmInfo : public MCAsmInfo {
> + virtual void anchor();
> + public:
> explicit X86ELFMCAsmInfo(const Triple &Triple);
> virtual const MCSection *getNonexecutableStackSection(MCContext &Ctx) const;
> };
>
> - struct X86MCAsmInfoMicrosoft : public MCAsmInfoMicrosoft {
> + class X86MCAsmInfoMicrosoft : public MCAsmInfoMicrosoft {
> + virtual void anchor();
> + public:
> explicit X86MCAsmInfoMicrosoft(const Triple &Triple);
> };
>
> - struct X86MCAsmInfoGNUCOFF : public MCAsmInfoGNUCOFF {
> + class X86MCAsmInfoGNUCOFF : public MCAsmInfoGNUCOFF {
> + virtual void anchor();
> + public:
> explicit X86MCAsmInfoGNUCOFF(const Triple &Triple);
> };
> } // namespace llvm
>
> Added: llvm/trunk/lib/Target/X86/X86MachineFunctionInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86MachineFunctionInfo.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86MachineFunctionInfo.cpp (added)
> +++ llvm/trunk/lib/Target/X86/X86MachineFunctionInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -0,0 +1,14 @@
> +//====- X86MachineFuctionInfo.cpp - X86 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 "X86MachineFunctionInfo.h"
> +
> +using namespace llvm;
> +
> +void X86MachineFunctionInfo::anchor() { }
>
> Modified: llvm/trunk/lib/Target/X86/X86MachineFunctionInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86MachineFunctionInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86MachineFunctionInfo.h (original)
> +++ llvm/trunk/lib/Target/X86/X86MachineFunctionInfo.h Mon Dec 19 20:50:00 2011
> @@ -21,6 +21,8 @@
> /// X86MachineFunctionInfo - This class is derived from MachineFunction and
> /// contains private X86 target-specific information for each MachineFunction.
> class X86MachineFunctionInfo : public MachineFunctionInfo {
> + virtual void anchor();
> +
> /// ForceFramePointer - True if the function is required to use of frame
> /// pointer for reasons other than it containing dynamic allocation or
> /// that FP eliminatation is turned off. For example, Cygwin main function
>
> Modified: llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86TargetMachine.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86TargetMachine.cpp (original)
> +++ llvm/trunk/lib/Target/X86/X86TargetMachine.cpp Mon Dec 19 20:50:00 2011
> @@ -28,6 +28,7 @@
> RegisterTargetMachine<X86_64TargetMachine> Y(TheX86_64Target);
> }
>
> +void X86_32TargetMachine::anchor() { }
>
> X86_32TargetMachine::X86_32TargetMachine(const Target &T, StringRef TT,
> StringRef CPU, StringRef FS,
> @@ -50,6 +51,7 @@
> JITInfo(*this) {
> }
>
> +void X86_64TargetMachine::anchor() { }
>
> X86_64TargetMachine::X86_64TargetMachine(const Target &T, StringRef TT,
> StringRef CPU, StringRef FS,
>
> Modified: llvm/trunk/lib/Target/X86/X86TargetMachine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86TargetMachine.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86TargetMachine.h (original)
> +++ llvm/trunk/lib/Target/X86/X86TargetMachine.h Mon Dec 19 20:50:00 2011
> @@ -78,6 +78,7 @@
> /// X86_32TargetMachine - X86 32-bit target machine.
> ///
> class X86_32TargetMachine : public X86TargetMachine {
> + virtual void anchor();
> const TargetData DataLayout; // Calculates type size & alignment
> X86InstrInfo InstrInfo;
> X86SelectionDAGInfo TSInfo;
> @@ -106,6 +107,7 @@
> /// X86_64TargetMachine - X86 64-bit target machine.
> ///
> class X86_64TargetMachine : public X86TargetMachine {
> + virtual void anchor();
> const TargetData DataLayout; // Calculates type size & alignment
> X86InstrInfo InstrInfo;
> X86SelectionDAGInfo TSInfo;
>
> Modified: llvm/trunk/lib/Target/XCore/MCTargetDesc/XCoreMCAsmInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/XCore/MCTargetDesc/XCoreMCAsmInfo.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/XCore/MCTargetDesc/XCoreMCAsmInfo.cpp (original)
> +++ llvm/trunk/lib/Target/XCore/MCTargetDesc/XCoreMCAsmInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -10,6 +10,8 @@
> #include "XCoreMCAsmInfo.h"
> using namespace llvm;
>
> +void XCoreMCAsmInfo::anchor() { }
> +
> XCoreMCAsmInfo::XCoreMCAsmInfo(const Target &T, StringRef TT) {
> SupportsDebugInformation = true;
> Data16bitsDirective = "\t.short\t";
>
> Modified: llvm/trunk/lib/Target/XCore/MCTargetDesc/XCoreMCAsmInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/XCore/MCTargetDesc/XCoreMCAsmInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/XCore/MCTargetDesc/XCoreMCAsmInfo.h (original)
> +++ llvm/trunk/lib/Target/XCore/MCTargetDesc/XCoreMCAsmInfo.h Mon Dec 19 20:50:00 2011
> @@ -21,6 +21,7 @@
> class Target;
>
> class XCoreMCAsmInfo : public MCAsmInfo {
> + virtual void anchor();
> public:
> explicit XCoreMCAsmInfo(const Target &T, StringRef TT);
> };
>
> Added: llvm/trunk/lib/Target/XCore/XCoreMachineFunctionInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/XCore/XCoreMachineFunctionInfo.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/XCore/XCoreMachineFunctionInfo.cpp (added)
> +++ llvm/trunk/lib/Target/XCore/XCoreMachineFunctionInfo.cpp Mon Dec 19 20:50:00 2011
> @@ -0,0 +1,14 @@
> +//===- XCoreMachineFuctionInfo.cpp - XCore 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 "XCoreMachineFunctionInfo.h"
> +
> +using namespace llvm;
> +
> +void XCoreFunctionInfo::anchor() { }
>
> Modified: llvm/trunk/lib/Target/XCore/XCoreMachineFunctionInfo.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/XCore/XCoreMachineFunctionInfo.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/XCore/XCoreMachineFunctionInfo.h (original)
> +++ llvm/trunk/lib/Target/XCore/XCoreMachineFunctionInfo.h Mon Dec 19 20:50:00 2011
> @@ -26,7 +26,7 @@
> /// XCoreFunctionInfo - This class is derived from MachineFunction private
> /// XCore target-specific information for each MachineFunction.
> class XCoreFunctionInfo : public MachineFunctionInfo {
> -private:
> + virtual void anchor();
> bool UsesLR;
> int LRSpillSlot;
> int FPSpillSlot;
>
> Modified: llvm/trunk/lib/Target/XCore/XCoreSubtarget.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/XCore/XCoreSubtarget.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/XCore/XCoreSubtarget.cpp (original)
> +++ llvm/trunk/lib/Target/XCore/XCoreSubtarget.cpp Mon Dec 19 20:50:00 2011
> @@ -21,6 +21,8 @@
>
> using namespace llvm;
>
> +void XCoreSubtarget::anchor() { }
> +
> XCoreSubtarget::XCoreSubtarget(const std::string &TT,
> const std::string &CPU, const std::string &FS)
> : XCoreGenSubtargetInfo(TT, CPU, FS)
>
> Modified: llvm/trunk/lib/Target/XCore/XCoreSubtarget.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/XCore/XCoreSubtarget.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/XCore/XCoreSubtarget.h (original)
> +++ llvm/trunk/lib/Target/XCore/XCoreSubtarget.h Mon Dec 19 20:50:00 2011
> @@ -25,6 +25,7 @@
> class StringRef;
>
> class XCoreSubtarget : public XCoreGenSubtargetInfo {
> + virtual void anchor();
>
> public:
> /// This constructor initializes the data members to match that
>
> Modified: llvm/trunk/lib/Transforms/Utils/SimplifyIndVar.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SimplifyIndVar.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Utils/SimplifyIndVar.cpp (original)
> +++ llvm/trunk/lib/Transforms/Utils/SimplifyIndVar.cpp Mon Dec 19 20:50:00 2011
> @@ -375,6 +375,8 @@
>
> namespace llvm {
>
> +void IVVisitor::anchor() { }
> +
> /// simplifyUsersOfIV - Simplify instructions that use this induction variable
> /// by using ScalarEvolution to analyze the IV's recurrence.
> bool simplifyUsersOfIV(PHINode *CurrIV, ScalarEvolution *SE, LPPassManager *LPM,
>
> Modified: llvm/trunk/lib/VMCore/Constants.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Constants.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/VMCore/Constants.cpp (original)
> +++ llvm/trunk/lib/VMCore/Constants.cpp Mon Dec 19 20:50:00 2011
> @@ -40,6 +40,8 @@
> // Constant Class
> //===----------------------------------------------------------------------===//
>
> +void Constant::anchor() { }
> +
> bool Constant::isNegativeZeroValue() const {
> // Floating point values have an explicit -0.0 value.
> if (const ConstantFP *CFP = dyn_cast<ConstantFP>(this))
> @@ -363,6 +365,8 @@
> // ConstantInt
> //===----------------------------------------------------------------------===//
>
> +void ConstantInt::anchor() { }
> +
> ConstantInt::ConstantInt(IntegerType *Ty, const APInt& V)
> : Constant(Ty, ConstantIntVal, 0, 0), Val(V) {
> assert(V.getBitWidth() == Ty->getBitWidth() && "Invalid constant for type");
> @@ -486,6 +490,8 @@
> return &APFloat::PPCDoubleDouble;
> }
>
> +void ConstantFP::anchor() { }
> +
> /// get() - This returns a constant fp for the specified value in the
> /// specified type. This should only be used for simple constant values like
> /// 2.0/1.0 etc, that are known-valid both as double and as the target format.
>
> Modified: llvm/trunk/lib/VMCore/ConstantsContext.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/ConstantsContext.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/VMCore/ConstantsContext.h (original)
> +++ llvm/trunk/lib/VMCore/ConstantsContext.h Mon Dec 19 20:50:00 2011
> @@ -30,6 +30,7 @@
> /// UnaryConstantExpr - This class is private to Constants.cpp, and is used
> /// behind the scenes to implement unary constant exprs.
> class UnaryConstantExpr : public ConstantExpr {
> + virtual void anchor();
> void *operator new(size_t, unsigned); // DO NOT IMPLEMENT
> public:
> // allocate space for exactly one operand
> @@ -46,6 +47,7 @@
> /// BinaryConstantExpr - This class is private to Constants.cpp, and is used
> /// behind the scenes to implement binary constant exprs.
> class BinaryConstantExpr : public ConstantExpr {
> + virtual void anchor();
> void *operator new(size_t, unsigned); // DO NOT IMPLEMENT
> public:
> // allocate space for exactly two operands
> @@ -66,6 +68,7 @@
> /// SelectConstantExpr - This class is private to Constants.cpp, and is used
> /// behind the scenes to implement select constant exprs.
> class SelectConstantExpr : public ConstantExpr {
> + virtual void anchor();
> void *operator new(size_t, unsigned); // DO NOT IMPLEMENT
> public:
> // allocate space for exactly three operands
> @@ -86,6 +89,7 @@
> /// Constants.cpp, and is used behind the scenes to implement
> /// extractelement constant exprs.
> class ExtractElementConstantExpr : public ConstantExpr {
> + virtual void anchor();
> void *operator new(size_t, unsigned); // DO NOT IMPLEMENT
> public:
> // allocate space for exactly two operands
> @@ -106,6 +110,7 @@
> /// Constants.cpp, and is used behind the scenes to implement
> /// insertelement constant exprs.
> class InsertElementConstantExpr : public ConstantExpr {
> + virtual void anchor();
> void *operator new(size_t, unsigned); // DO NOT IMPLEMENT
> public:
> // allocate space for exactly three operands
> @@ -127,6 +132,7 @@
> /// Constants.cpp, and is used behind the scenes to implement
> /// shufflevector constant exprs.
> class ShuffleVectorConstantExpr : public ConstantExpr {
> + virtual void anchor();
> void *operator new(size_t, unsigned); // DO NOT IMPLEMENT
> public:
> // allocate space for exactly three operands
> @@ -151,6 +157,7 @@
> /// Constants.cpp, and is used behind the scenes to implement
> /// extractvalue constant exprs.
> class ExtractValueConstantExpr : public ConstantExpr {
> + virtual void anchor();
> void *operator new(size_t, unsigned); // DO NOT IMPLEMENT
> public:
> // allocate space for exactly one operand
> @@ -176,6 +183,7 @@
> /// Constants.cpp, and is used behind the scenes to implement
> /// insertvalue constant exprs.
> class InsertValueConstantExpr : public ConstantExpr {
> + virtual void anchor();
> void *operator new(size_t, unsigned); // DO NOT IMPLEMENT
> public:
> // allocate space for exactly one operand
> @@ -202,6 +210,7 @@
> /// GetElementPtrConstantExpr - This class is private to Constants.cpp, and is
> /// used behind the scenes to implement getelementpr constant exprs.
> class GetElementPtrConstantExpr : public ConstantExpr {
> + virtual void anchor();
> GetElementPtrConstantExpr(Constant *C, const std::vector<Constant*> &IdxList,
> Type *DestTy);
> public:
> @@ -221,8 +230,10 @@
> // CompareConstantExpr - This class is private to Constants.cpp, and is used
> // behind the scenes to implement ICmp and FCmp constant expressions. This is
> // needed in order to store the predicate value for these instructions.
> -struct CompareConstantExpr : public ConstantExpr {
> +class CompareConstantExpr : public ConstantExpr {
> + virtual void anchor();
> void *operator new(size_t, unsigned); // DO NOT IMPLEMENT
> +public:
> // allocate space for exactly two operands
> void *operator new(size_t s) {
> return User::operator new(s, 2);
>
> Modified: llvm/trunk/lib/VMCore/Function.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Function.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/VMCore/Function.cpp (original)
> +++ llvm/trunk/lib/VMCore/Function.cpp Mon Dec 19 20:50:00 2011
> @@ -39,6 +39,8 @@
> // Argument Implementation
> //===----------------------------------------------------------------------===//
>
> +void Argument::anchor() { }
> +
> Argument::Argument(Type *Ty, const Twine &Name, Function *Par)
> : Value(Ty, Value::ArgumentVal) {
> Parent = 0;
>
> Modified: llvm/trunk/lib/VMCore/LLVMContextImpl.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/LLVMContextImpl.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/VMCore/LLVMContextImpl.cpp (original)
> +++ llvm/trunk/lib/VMCore/LLVMContextImpl.cpp Mon Dec 19 20:50:00 2011
> @@ -93,3 +93,24 @@
> // Destroy MDStrings.
> DeleteContainerSeconds(MDStringCache);
> }
> +
> +// ConstantsContext anchors
> +void UnaryConstantExpr::anchor() { }
> +
> +void BinaryConstantExpr::anchor() { }
> +
> +void SelectConstantExpr::anchor() { }
> +
> +void ExtractElementConstantExpr::anchor() { }
> +
> +void InsertElementConstantExpr::anchor() { }
> +
> +void ShuffleVectorConstantExpr::anchor() { }
> +
> +void ExtractValueConstantExpr::anchor() { }
> +
> +void InsertValueConstantExpr::anchor() { }
> +
> +void GetElementPtrConstantExpr::anchor() { }
> +
> +void CompareConstantExpr::anchor() { }
>
> Modified: llvm/trunk/lib/VMCore/Metadata.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Metadata.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/VMCore/Metadata.cpp (original)
> +++ llvm/trunk/lib/VMCore/Metadata.cpp Mon Dec 19 20:50:00 2011
> @@ -29,6 +29,8 @@
> // MDString implementation.
> //
>
> +void MDString::anchor() { }
> +
> MDString::MDString(LLVMContext &C, StringRef S)
> : Value(Type::getMetadataTy(C), Value::MDStringVal), Str(S) {}
>
>
> Modified: llvm/trunk/lib/VMCore/PassManager.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/PassManager.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/lib/VMCore/PassManager.cpp (original)
> +++ llvm/trunk/lib/VMCore/PassManager.cpp Mon Dec 19 20:50:00 2011
> @@ -223,6 +223,7 @@
> class FunctionPassManagerImpl : public Pass,
> public PMDataManager,
> public PMTopLevelManager {
> + virtual void anchor();
> private:
> bool wasRun;
> public:
> @@ -291,6 +292,8 @@
> }
> };
>
> +void FunctionPassManagerImpl::anchor() {}
> +
> char FunctionPassManagerImpl::ID = 0;
>
> //===----------------------------------------------------------------------===//
> @@ -384,6 +387,7 @@
> class PassManagerImpl : public Pass,
> public PMDataManager,
> public PMTopLevelManager {
> + virtual void anchor();
>
> public:
> static char ID;
> @@ -437,6 +441,8 @@
> }
> };
>
> +void PassManagerImpl::anchor() {}
> +
> char PassManagerImpl::ID = 0;
> } // End of llvm namespace
>
>
> Modified: llvm/trunk/tools/bugpoint/CrashDebugger.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/bugpoint/CrashDebugger.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/tools/bugpoint/CrashDebugger.cpp (original)
> +++ llvm/trunk/tools/bugpoint/CrashDebugger.cpp Mon Dec 19 20:50:00 2011
> @@ -169,7 +169,7 @@
> return false;
> }
>
> -namespace llvm {
> +namespace {
> /// ReduceCrashingFunctions reducer - This works by removing functions and
> /// seeing if the program still crashes. If it does, then keep the newer,
> /// smaller program.
>
> Modified: llvm/trunk/tools/bugpoint/ToolRunner.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/bugpoint/ToolRunner.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/tools/bugpoint/ToolRunner.cpp (original)
> +++ llvm/trunk/tools/bugpoint/ToolRunner.cpp Mon Dec 19 20:50:00 2011
> @@ -234,6 +234,8 @@
> Timeout, MemoryLimit, Error);
> }
>
> +void AbstractInterpreter::anchor() { }
> +
> // LLI create method - Try to find the LLI executable
> AbstractInterpreter *AbstractInterpreter::createLLI(const char *Argv0,
> std::string &Message,
>
> Modified: llvm/trunk/tools/bugpoint/ToolRunner.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/bugpoint/ToolRunner.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/tools/bugpoint/ToolRunner.h (original)
> +++ llvm/trunk/tools/bugpoint/ToolRunner.h Mon Dec 19 20:50:00 2011
> @@ -86,6 +86,7 @@
> /// complexity behind a simple interface.
> ///
> class AbstractInterpreter {
> + virtual void anchor();
> public:
> static CBE *createCBE(const char *Argv0, std::string &Message,
> const std::string &GCCBinary,
>
> Modified: llvm/trunk/tools/llvm-diff/DiffConsumer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-diff/DiffConsumer.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-diff/DiffConsumer.cpp (original)
> +++ llvm/trunk/tools/llvm-diff/DiffConsumer.cpp Mon Dec 19 20:50:00 2011
> @@ -44,6 +44,8 @@
> }
>
>
> +void Consumer::anchor() { }
> +
> void DiffConsumer::printValue(Value *V, bool isL) {
> if (V->hasName()) {
> out << (isa<GlobalValue>(V) ? '@' : '%') << V->getName();
>
> Modified: llvm/trunk/tools/llvm-diff/DiffConsumer.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-diff/DiffConsumer.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-diff/DiffConsumer.h (original)
> +++ llvm/trunk/tools/llvm-diff/DiffConsumer.h Mon Dec 19 20:50:00 2011
> @@ -29,6 +29,7 @@
>
> /// The interface for consumers of difference data.
> class Consumer {
> + virtual void anchor();
> public:
> /// Record that a local context has been entered. Left and
> /// Right are IR "containers" of some sort which are being
>
> Modified: llvm/trunk/tools/llvm-diff/DifferenceEngine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-diff/DifferenceEngine.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-diff/DifferenceEngine.cpp (original)
> +++ llvm/trunk/tools/llvm-diff/DifferenceEngine.cpp Mon Dec 19 20:50:00 2011
> @@ -628,6 +628,8 @@
>
> }
>
> +void DifferenceEngine::Oracle::anchor() { }
> +
> void DifferenceEngine::diff(Function *L, Function *R) {
> Context C(*this, L, R);
>
>
> Modified: llvm/trunk/tools/llvm-diff/DifferenceEngine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-diff/DifferenceEngine.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-diff/DifferenceEngine.h (original)
> +++ llvm/trunk/tools/llvm-diff/DifferenceEngine.h Mon Dec 19 20:50:00 2011
> @@ -50,7 +50,9 @@
>
> /// An oracle for answering whether two values are equivalent as
> /// operands.
> - struct Oracle {
> + class Oracle {
> + virtual void anchor();
> + public:
> virtual bool operator()(Value *L, Value *R) = 0;
>
> protected:
>
> Modified: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp (original)
> +++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp Mon Dec 19 20:50:00 2011
> @@ -126,6 +126,8 @@
> return 0;
> }
>
> +void llvm::StringRefMemoryObject::anchor() { }
> +
> void llvm::DumpBytes(StringRef bytes) {
> static const char hex_rep[] = "0123456789abcdef";
> // FIXME: The real way to do this is to figure out the longest instruction
>
> Modified: llvm/trunk/tools/llvm-objdump/llvm-objdump.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/llvm-objdump.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-objdump/llvm-objdump.h (original)
> +++ llvm/trunk/tools/llvm-objdump/llvm-objdump.h Mon Dec 19 20:50:00 2011
> @@ -25,7 +25,7 @@
> void DisassembleInputMachO(StringRef Filename);
>
> class StringRefMemoryObject : public MemoryObject {
> -private:
> + virtual void anchor();
> StringRef Bytes;
> public:
> StringRefMemoryObject(StringRef bytes) : Bytes(bytes) {}
>
> Modified: llvm/trunk/unittests/Support/IRBuilderTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/IRBuilderTest.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/unittests/Support/IRBuilderTest.cpp (original)
> +++ llvm/trunk/unittests/Support/IRBuilderTest.cpp Mon Dec 19 20:50:00 2011
> @@ -19,6 +19,7 @@
>
> using namespace llvm;
>
> +namespace {
> class IRBuilderTest : public testing::Test {
> protected:
> virtual void SetUp() {
> @@ -37,6 +38,7 @@
> OwningPtr<Module> M;
> BasicBlock *BB;
> };
> +}
>
> TEST_F(IRBuilderTest, Lifetime) {
> IRBuilder<> Builder(BB);
>
> Modified: llvm/trunk/unittests/Transforms/Utils/Cloning.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Transforms/Utils/Cloning.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/unittests/Transforms/Utils/Cloning.cpp (original)
> +++ llvm/trunk/unittests/Transforms/Utils/Cloning.cpp Mon Dec 19 20:50:00 2011
> @@ -17,6 +17,7 @@
>
> using namespace llvm;
>
> +namespace {
> class CloneInstruction : public ::testing::Test {
> protected:
> virtual void SetUp() {
> @@ -47,6 +48,7 @@
> LLVMContext context;
> Value *V;
> };
> +}
>
> TEST_F(CloneInstruction, OverflowBits) {
> V = new Argument(Type::getInt32Ty(context));
>
> Modified: llvm/trunk/utils/TableGen/DAGISelMatcher.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/DAGISelMatcher.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/utils/TableGen/DAGISelMatcher.cpp (original)
> +++ llvm/trunk/utils/TableGen/DAGISelMatcher.cpp Mon Dec 19 20:50:00 2011
> @@ -15,6 +15,8 @@
> #include "llvm/ADT/StringExtras.h"
> using namespace llvm;
>
> +void Matcher::anchor() { }
> +
> void Matcher::dump() const {
> print(errs(), 0);
> }
> @@ -324,6 +326,10 @@
> }
>
>
> +void EmitNodeMatcher::anchor() { }
> +
> +void MorphNodeToMatcher::anchor() { }
> +
> unsigned MarkGlueResultsMatcher::getHashImpl() const {
> return HashUnsigneds(GlueResultNodes.begin(), GlueResultNodes.end());
> }
>
> Modified: llvm/trunk/utils/TableGen/DAGISelMatcher.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/DAGISelMatcher.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/utils/TableGen/DAGISelMatcher.h (original)
> +++ llvm/trunk/utils/TableGen/DAGISelMatcher.h Mon Dec 19 20:50:00 2011
> @@ -41,6 +41,7 @@
> // The next matcher node that is executed after this one. Null if this is the
> // last stage of a match.
> OwningPtr<Matcher> Next;
> + virtual void anchor();
> public:
> enum KindTy {
> // Matcher state manipulation.
> @@ -1011,6 +1012,7 @@
>
> /// EmitNodeMatcher - This signals a successful match and generates a node.
> class EmitNodeMatcher : public EmitNodeMatcherCommon {
> + virtual void anchor();
> unsigned FirstResultSlot;
> public:
> EmitNodeMatcher(const std::string &opcodeName,
> @@ -1033,6 +1035,7 @@
> };
>
> class MorphNodeToMatcher : public EmitNodeMatcherCommon {
> + virtual void anchor();
> const PatternToMatch &Pattern;
> public:
> MorphNodeToMatcher(const std::string &opcodeName,
>
> Modified: llvm/trunk/utils/TableGen/SetTheory.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/SetTheory.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/utils/TableGen/SetTheory.cpp (original)
> +++ llvm/trunk/utils/TableGen/SetTheory.cpp Mon Dec 19 20:50:00 2011
> @@ -198,6 +198,10 @@
> };
> } // end anonymous namespace
>
> +void SetTheory::Operator::anchor() { }
> +
> +void SetTheory::Expander::anchor() { }
> +
> SetTheory::SetTheory() {
> addOperator("add", new AddOp);
> addOperator("sub", new SubOp);
>
> Modified: llvm/trunk/utils/TableGen/SetTheory.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/SetTheory.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/utils/TableGen/SetTheory.h (original)
> +++ llvm/trunk/utils/TableGen/SetTheory.h Mon Dec 19 20:50:00 2011
> @@ -65,7 +65,9 @@
> typedef SmallSetVector<Record*, 16> RecSet;
>
> /// Operator - A callback representing a DAG operator.
> - struct Operator {
> + class Operator {
> + virtual void anchor();
> + public:
> virtual ~Operator() {}
>
> /// apply - Apply this operator to Expr's arguments and insert the result
> @@ -76,7 +78,9 @@
> /// Expander - A callback function that can transform a Record representing a
> /// set into a fully expanded list of elements. Expanders provide a way for
> /// users to define named sets that can be used in DAG expressions.
> - struct Expander {
> + class Expander {
> + virtual void anchor();
> + public:
> virtual ~Expander() {}
>
> virtual void expand(SetTheory&, Record*, RecSet &Elts) =0;
>
> Modified: llvm/trunk/utils/TableGen/TGValueTypes.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/TGValueTypes.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/utils/TableGen/TGValueTypes.cpp (original)
> +++ llvm/trunk/utils/TableGen/TGValueTypes.cpp Mon Dec 19 20:50:00 2011
> @@ -18,6 +18,9 @@
> #include <map>
> using namespace llvm;
>
> +#pragma clang diagnostic push
> +#pragma clang diagnostic ignored "-Wweak-vtables"
> +
> namespace llvm {
>
> class Type {
> @@ -58,6 +61,8 @@
> }
> };
>
> +#pragma clang diagnostic pop
> +
> static std::map<unsigned, const Type *>
> ExtendedIntegerTypeMap;
> static std::map<std::pair<uintptr_t, uintptr_t>, const Type *>
>
> Modified: llvm/trunk/utils/TableGen/TableGen.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/TableGen.cpp?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/utils/TableGen/TableGen.cpp (original)
> +++ llvm/trunk/utils/TableGen/TableGen.cpp Mon Dec 19 20:50:00 2011
> @@ -101,92 +101,92 @@
>
> cl::opt<std::string>
> Class("class", cl::desc("Print Enum list for this class"),
> - cl::value_desc("class name"));
> -}
> -
> -class LLVMTableGenAction : public TableGenAction {
> -public:
> - bool operator()(raw_ostream &OS, RecordKeeper &Records) {
> - switch (Action) {
> - case PrintRecords:
> - OS << Records; // No argument, dump all contents
> - break;
> - case GenEmitter:
> - CodeEmitterGen(Records).run(OS);
> - break;
> - case GenRegisterInfo:
> - RegisterInfoEmitter(Records).run(OS);
> - break;
> - case GenInstrInfo:
> - InstrInfoEmitter(Records).run(OS);
> - break;
> - case GenCallingConv:
> - CallingConvEmitter(Records).run(OS);
> - break;
> - case GenAsmWriter:
> - AsmWriterEmitter(Records).run(OS);
> - break;
> - case GenAsmMatcher:
> - AsmMatcherEmitter(Records).run(OS);
> - break;
> - case GenDisassembler:
> - DisassemblerEmitter(Records).run(OS);
> - break;
> - case GenPseudoLowering:
> - PseudoLoweringEmitter(Records).run(OS);
> - break;
> - case GenDAGISel:
> - DAGISelEmitter(Records).run(OS);
> - break;
> - case GenDFAPacketizer:
> - DFAGen(Records).run(OS);
> - break;
> - case GenFastISel:
> - FastISelEmitter(Records).run(OS);
> - break;
> - case GenSubtarget:
> - SubtargetEmitter(Records).run(OS);
> - break;
> - case GenIntrinsic:
> - IntrinsicEmitter(Records).run(OS);
> - break;
> - case GenTgtIntrinsic:
> - IntrinsicEmitter(Records, true).run(OS);
> - break;
> - case GenEDInfo:
> - EDEmitter(Records).run(OS);
> - break;
> - case PrintEnums:
> - {
> - std::vector<Record*> Recs = Records.getAllDerivedDefinitions(Class);
> - for (unsigned i = 0, e = Recs.size(); i != e; ++i)
> - OS << Recs[i]->getName() << ", ";
> - OS << "\n";
> - break;
> - }
> - case PrintSets:
> - {
> - SetTheory Sets;
> - Sets.addFieldExpander("Set", "Elements");
> - std::vector<Record*> Recs = Records.getAllDerivedDefinitions("Set");
> - for (unsigned i = 0, e = Recs.size(); i != e; ++i) {
> - OS << Recs[i]->getName() << " = [";
> - const std::vector<Record*> *Elts = Sets.expand(Recs[i]);
> - assert(Elts && "Couldn't expand Set instance");
> - for (unsigned ei = 0, ee = Elts->size(); ei != ee; ++ei)
> - OS << ' ' << (*Elts)[ei]->getName();
> - OS << " ]\n";
> + cl::value_desc("class name"));
> +
> + class LLVMTableGenAction : public TableGenAction {
> + public:
> + bool operator()(raw_ostream &OS, RecordKeeper &Records) {
> + switch (Action) {
> + case PrintRecords:
> + OS << Records; // No argument, dump all contents
> + break;
> + case GenEmitter:
> + CodeEmitterGen(Records).run(OS);
> + break;
> + case GenRegisterInfo:
> + RegisterInfoEmitter(Records).run(OS);
> + break;
> + case GenInstrInfo:
> + InstrInfoEmitter(Records).run(OS);
> + break;
> + case GenCallingConv:
> + CallingConvEmitter(Records).run(OS);
> + break;
> + case GenAsmWriter:
> + AsmWriterEmitter(Records).run(OS);
> + break;
> + case GenAsmMatcher:
> + AsmMatcherEmitter(Records).run(OS);
> + break;
> + case GenDisassembler:
> + DisassemblerEmitter(Records).run(OS);
> + break;
> + case GenPseudoLowering:
> + PseudoLoweringEmitter(Records).run(OS);
> + break;
> + case GenDAGISel:
> + DAGISelEmitter(Records).run(OS);
> + break;
> + case GenDFAPacketizer:
> + DFAGen(Records).run(OS);
> + break;
> + case GenFastISel:
> + FastISelEmitter(Records).run(OS);
> + break;
> + case GenSubtarget:
> + SubtargetEmitter(Records).run(OS);
> + break;
> + case GenIntrinsic:
> + IntrinsicEmitter(Records).run(OS);
> + break;
> + case GenTgtIntrinsic:
> + IntrinsicEmitter(Records, true).run(OS);
> + break;
> + case GenEDInfo:
> + EDEmitter(Records).run(OS);
> + break;
> + case PrintEnums:
> + {
> + std::vector<Record*> Recs = Records.getAllDerivedDefinitions(Class);
> + for (unsigned i = 0, e = Recs.size(); i != e; ++i)
> + OS << Recs[i]->getName() << ", ";
> + OS << "\n";
> + break;
> }
> - break;
> - }
> - default:
> - assert(1 && "Invalid Action");
> - return true;
> + case PrintSets:
> + {
> + SetTheory Sets;
> + Sets.addFieldExpander("Set", "Elements");
> + std::vector<Record*> Recs = Records.getAllDerivedDefinitions("Set");
> + for (unsigned i = 0, e = Recs.size(); i != e; ++i) {
> + OS << Recs[i]->getName() << " = [";
> + const std::vector<Record*> *Elts = Sets.expand(Recs[i]);
> + assert(Elts && "Couldn't expand Set instance");
> + for (unsigned ei = 0, ee = Elts->size(); ei != ee; ++ei)
> + OS << ' ' << (*Elts)[ei]->getName();
> + OS << " ]\n";
> + }
> + break;
> + }
> + default:
> + assert(1 && "Invalid Action");
> + return true;
> + }
> +
> + return false;
> }
> -
> - return false;
> - }
> -};
> + };
> +}
>
> int main(int argc, char **argv) {
> sys::PrintStackTraceOnErrorSignal();
>
> Added: llvm/trunk/utils/TableGen/X86ModRMFilters.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/X86ModRMFilters.cpp?rev=146960&view=auto
> ==============================================================================
> --- llvm/trunk/utils/TableGen/X86ModRMFilters.cpp (added)
> +++ llvm/trunk/utils/TableGen/X86ModRMFilters.cpp Mon Dec 19 20:50:00 2011
> @@ -0,0 +1,26 @@
> +//===- X86ModRMFilters.cpp - Disassembler ModR/M filterss -------*- C++ -*-===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +#include "X86ModRMFilters.h"
> +
> +using namespace llvm::X86Disassembler;
> +
> +void ModRMFilter::anchor() { }
> +
> +void DumbFilter::anchor() { }
> +
> +void ModFilter::anchor() { }
> +
> +void EscapeFilter::anchor() { }
> +
> +void AddRegEscapeFilter::anchor() { }
> +
> +void ExtendedFilter::anchor() { }
> +
> +void ExactFilter::anchor() { }
>
> Modified: llvm/trunk/utils/TableGen/X86ModRMFilters.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/X86ModRMFilters.h?rev=146960&r1=146959&r2=146960&view=diff
> ==============================================================================
> --- llvm/trunk/utils/TableGen/X86ModRMFilters.h (original)
> +++ llvm/trunk/utils/TableGen/X86ModRMFilters.h Mon Dec 19 20:50:00 2011
> @@ -27,6 +27,7 @@
> /// ModRMFilter - Abstract base class for clases that recognize patterns in
> /// ModR/M bytes.
> class ModRMFilter {
> + virtual void anchor();
> public:
> /// Destructor - Override as necessary.
> virtual ~ModRMFilter() { }
> @@ -49,6 +50,7 @@
> /// require a ModR/M byte or instructions where the entire ModR/M byte is used
> /// for operands.
> class DumbFilter : public ModRMFilter {
> + virtual void anchor();
> public:
> bool isDumb() const {
> return true;
> @@ -63,7 +65,7 @@
> /// Some instructions are classified based on whether they are 11 or anything
> /// else. This filter performs that classification.
> class ModFilter : public ModRMFilter {
> -private:
> + virtual void anchor();
> bool R;
> public:
> /// Constructor
> @@ -90,7 +92,7 @@
> /// possible value. Otherwise, there is one instruction for each value of the
> /// nnn field [bits 5-3], known elsewhere as the reg field.
> class EscapeFilter : public ModRMFilter {
> -private:
> + virtual void anchor();
> bool C0_FF;
> uint8_t NNN_or_ModRM;
> public:
> @@ -121,7 +123,7 @@
> /// maps to a single instruction. Such instructions require the ModR/M byte
> /// to fall between 0xc0 and 0xff.
> class AddRegEscapeFilter : public ModRMFilter {
> -private:
> + virtual void anchor();
> uint8_t ModRM;
> public:
> /// Constructor
> @@ -142,7 +144,7 @@
> /// ExtendedFilter - Extended opcodes are classified based on the value of the
> /// mod field [bits 7-6] and the value of the nnn field [bits 5-3].
> class ExtendedFilter : public ModRMFilter {
> -private:
> + virtual void anchor();
> bool R;
> uint8_t NNN;
> public:
> @@ -169,9 +171,8 @@
>
> /// ExactFilter - The occasional extended opcode (such as VMCALL or MONITOR)
> /// requires the ModR/M byte to have a specific value.
> -class ExactFilter : public ModRMFilter
> -{
> -private:
> +class ExactFilter : public ModRMFilter {
> + virtual void anchor();
> uint8_t ModRM;
> public:
> /// Constructor
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list