diff options
author | Devang Patel <dpatel@apple.com> | 2009-07-01 19:08:07 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2009-07-01 19:08:07 +0000 |
commit | 6d9148ce3d42a3f81c2828754a720278061c7aa7 (patch) | |
tree | 63ff3d64cf40b611ef7ea19e4813d6c8886dc163 | |
parent | 30d7b650aa443b78cfa1e918bb0d5eaf288b0a2f (diff) | |
download | external_llvm-6d9148ce3d42a3f81c2828754a720278061c7aa7.zip external_llvm-6d9148ce3d42a3f81c2828754a720278061c7aa7.tar.gz external_llvm-6d9148ce3d42a3f81c2828754a720278061c7aa7.tar.bz2 |
Add machine operand for MDNodes. This will be used to communicate debug info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74628 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/CodeGen/MachineInstrBuilder.h | 7 | ||||
-rw-r--r-- | include/llvm/CodeGen/MachineOperand.h | 13 |
2 files changed, 19 insertions, 1 deletions
diff --git a/include/llvm/CodeGen/MachineInstrBuilder.h b/include/llvm/CodeGen/MachineInstrBuilder.h index 29e9009..c6a6679 100644 --- a/include/llvm/CodeGen/MachineInstrBuilder.h +++ b/include/llvm/CodeGen/MachineInstrBuilder.h @@ -107,6 +107,13 @@ public: return *this; } + const MachineInstrBuilder &addMetadata(MDNode *N, + int64_t Offset = 0, + unsigned char TargetFlags = 0) const { + MI->addOperand(MachineOperand::CreateMDNode(N, Offset, TargetFlags)); + return *this; + } + const MachineInstrBuilder &addExternalSymbol(const char *FnName, int64_t Offset = 0, unsigned char TargetFlags = 0) const { diff --git a/include/llvm/CodeGen/MachineOperand.h b/include/llvm/CodeGen/MachineOperand.h index 08739a2..0eb204a 100644 --- a/include/llvm/CodeGen/MachineOperand.h +++ b/include/llvm/CodeGen/MachineOperand.h @@ -23,6 +23,7 @@ namespace llvm { class ConstantFP; class MachineBasicBlock; class GlobalValue; +class MDNode; class MachineInstr; class TargetMachine; class MachineRegisterInfo; @@ -41,7 +42,8 @@ public: MO_ConstantPoolIndex, ///< Address of indexed Constant in Constant Pool MO_JumpTableIndex, ///< Address of indexed Jump Table for switch MO_ExternalSymbol, ///< Name of external global symbol - MO_GlobalAddress ///< Address of a global value + MO_GlobalAddress, ///< Address of a global value + MO_Metadata ///< Metadata info }; private: @@ -107,6 +109,7 @@ private: int Index; // For MO_*Index - The index itself. const char *SymbolName; // For MO_ExternalSymbol. GlobalValue *GV; // For MO_GlobalAddress. + MDNode *Node; // For MO_Metadata. } Val; int64_t Offset; // An offset from the object. } OffsetedInfo; @@ -423,6 +426,14 @@ public: Op.setTargetFlags(TargetFlags); return Op; } + static MachineOperand CreateMDNode(MDNode *N, int64_t Offset, + unsigned char TargetFlags = 0) { + MachineOperand Op(MachineOperand::MO_Metadata); + Op.Contents.OffsetedInfo.Val.Node = N; + Op.setOffset(Offset); + Op.setTargetFlags(TargetFlags); + return Op; + } static MachineOperand CreateES(const char *SymName, int64_t Offset = 0, unsigned char TargetFlags = 0) { MachineOperand Op(MachineOperand::MO_ExternalSymbol); |