[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.222 - 1.223 --- Log message: Add keyword explicit. --- Diffs of the changes: (+1 -1) MachineInstr.h |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.222 llvm/include/llvm/CodeGen/MachineInstr.h:1.223 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.222 Fri Jun 15 14:05:13 2007 +++ llvm/include/llvm/CodeGen/MachineInstr.hMon Jun 18 09:11:31 2007 @@ -344,7 +344,7 @@ /// MachineInstr ctor - This constructor create a MachineInstr and add the /// implicit operands. It reserves space for number of operands specified by /// TargetInstrDescriptor. - MachineInstr(const TargetInstrDescriptor TID); + explicit MachineInstr(const TargetInstrDescriptor TID); /// MachineInstr ctor - Work exactly the same as the ctor above, except that /// the MachineInstr is created and added to the end of the specified basic ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.221 - 1.222 --- Log message: No longer needed. --- Diffs of the changes: (+0 -4) MachineInstr.h |4 1 files changed, 4 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.221 llvm/include/llvm/CodeGen/MachineInstr.h:1.222 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.221 Tue May 29 13:30:54 2007 +++ llvm/include/llvm/CodeGen/MachineInstr.hFri Jun 15 14:05:13 2007 @@ -394,10 +394,6 @@ return true; } - /// isPredicable - True if the instruction can be converted into a - /// predicated instruction. - bool isPredicable() const; - /// clone - Create a copy of 'this' instruction that is identical in /// all ways except the the instruction has no parent, prev, or next. MachineInstr* clone() const { return new MachineInstr(*this); } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.220 - 1.221 --- Log message: Add missing const qualifiers. --- Diffs of the changes: (+5 -4) MachineInstr.h |9 + 1 files changed, 5 insertions(+), 4 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.220 llvm/include/llvm/CodeGen/MachineInstr.h:1.221 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.220 Wed May 16 15:43:42 2007 +++ llvm/include/llvm/CodeGen/MachineInstr.hTue May 29 13:30:54 2007 @@ -415,15 +415,16 @@ /// findRegisterUseOperandIdx() - Returns the operand index that is a use of /// the specific register or -1 if it is not found. It further tightening /// the search criteria to a use that kills the register if isKill is true. - int findRegisterUseOperandIdx(unsigned Reg, bool isKill = false); + int findRegisterUseOperandIdx(unsigned Reg, bool isKill = false) const; /// findRegisterDefOperand() - Returns the MachineOperand that is a def of /// the specific register or NULL if it is not found. MachineOperand *findRegisterDefOperand(unsigned Reg); - /// findFirstPredOperand() - Find the first operand in the operand list that - // is used to represent the predicate. - MachineOperand *findFirstPredOperand(); + /// findFirstPredOperandIdx() - Find the index of the first operand in the + /// operand list that is used to represent the predicate. It returns -1 if + /// none is found. + int findFirstPredOperandIdx() const; /// copyKillDeadInfo - Copies kill / dead operand properties from MI. /// ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.219 - 1.220 --- Log message: Rename M_PREDICATED to M_PREDICABLE; Move TargetInstrInfo::isPredicatable() to MachineInstr::isPredicable(). --- Diffs of the changes: (+4 -0) MachineInstr.h |4 1 files changed, 4 insertions(+) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.219 llvm/include/llvm/CodeGen/MachineInstr.h:1.220 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.219 Mon May 14 20:25:06 2007 +++ llvm/include/llvm/CodeGen/MachineInstr.hWed May 16 15:43:42 2007 @@ -394,6 +394,10 @@ return true; } + /// isPredicable - True if the instruction can be converted into a + /// predicated instruction. + bool isPredicable() const; + /// clone - Create a copy of 'this' instruction that is identical in /// all ways except the the instruction has no parent, prev, or next. MachineInstr* clone() const { return new MachineInstr(*this); } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.218 - 1.219 --- Log message: Added getNumExplicitOperands and findFirstPredOperand. --- Diffs of the changes: (+10 -0) MachineInstr.h | 10 ++ 1 files changed, 10 insertions(+) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.218 llvm/include/llvm/CodeGen/MachineInstr.h:1.219 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.218 Tue May 1 00:57:01 2007 +++ llvm/include/llvm/CodeGen/MachineInstr.hMon May 14 20:25:06 2007 @@ -378,6 +378,9 @@ return Operands[i]; } + /// getNumExplicitOperands - Returns the number of non-implicit operands. + /// + unsigned getNumExplicitOperands() const; /// isIdenticalTo - Return true if this instruction is identical to (same /// opcode and same operands as) the specified instruction. @@ -413,11 +416,18 @@ /// findRegisterDefOperand() - Returns the MachineOperand that is a def of /// the specific register or NULL if it is not found. MachineOperand *findRegisterDefOperand(unsigned Reg); + + /// findFirstPredOperand() - Find the first operand in the operand list that + // is used to represent the predicate. + MachineOperand *findFirstPredOperand(); /// copyKillDeadInfo - Copies kill / dead operand properties from MI. /// void copyKillDeadInfo(const MachineInstr *MI); + /// copyPredicates - Copies predicate operand(s) from MI. + void copyPredicates(const MachineInstr *MI); + // // Debugging support // ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.217 - 1.218 --- Log message: llvm bug #1350, parts 1, 2, and 3. --- Diffs of the changes: (+31 -16) MachineInstr.h | 47 +++ 1 files changed, 31 insertions(+), 16 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.217 llvm/include/llvm/CodeGen/MachineInstr.h:1.218 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.217 Thu Apr 26 13:59:33 2007 +++ llvm/include/llvm/CodeGen/MachineInstr.hTue May 1 00:57:01 2007 @@ -71,10 +71,17 @@ // immediately after the write. i.e. A register // that is defined but never used. - /// offset - Offset to address of global or external, only valid for - /// MO_GlobalAddress, MO_ExternalSym and MO_ConstantPoolIndex - int offset; - + /// auxInfo - auxiliary information used by the MachineOperand + union { +/// offset - Offset to address of global or external, only valid for +/// MO_GlobalAddress, MO_ExternalSym and MO_ConstantPoolIndex +int offset; + +/// subReg - SubRegister number, only valid for MO_Register. A value of 0 +/// indicates the MO_Register has no subReg. +unsigned subReg; + } auxInfo; + MachineOperand() {} void print(std::ostream os) const; @@ -95,7 +102,7 @@ Op.IsImp = false; Op.IsKill = false; Op.IsDead = false; -Op.offset = 0; +Op.auxInfo.offset = 0; return Op; } @@ -106,7 +113,7 @@ IsKill = MO.IsKill; IsDead = MO.IsDead; opType = MO.opType; -offset = MO.offset; +auxInfo = MO.auxInfo; return *this; } @@ -169,7 +176,11 @@ int getOffset() const { assert((isGlobalAddress() || isExternalSymbol() || isConstantPoolIndex()) Wrong MachineOperand accessor); -return offset; +return auxInfo.offset; + } + unsigned getSubReg() const { +assert(isRegister() Wrong MachineOperand accessor); +return auxInfo.subReg; } const char *getSymbolName() const { assert(isExternalSymbol() Wrong MachineOperand accessor); @@ -254,7 +265,11 @@ assert((isGlobalAddress() || isExternalSymbol() || isConstantPoolIndex() || isJumpTableIndex()) Wrong MachineOperand accessor); -offset = Offset; +auxInfo.offset = Offset; + } + void setSubReg(unsigned subReg) { +assert(isRegister() Wrong MachineOperand accessor); +auxInfo.subReg = subReg; } void setConstantPoolIndex(unsigned Idx) { assert(isConstantPoolIndex() Wrong MachineOperand accessor); @@ -433,7 +448,7 @@ Op.IsKill = IsKill; Op.IsDead = IsDead; Op.contents.RegNo = Reg; -Op.offset = 0; +Op.auxInfo.subReg = 0; } /// addImmOperand - Add a zero extended constant argument to the @@ -443,14 +458,14 @@ MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_Immediate; Op.contents.immedVal = Val; -Op.offset = 0; +Op.auxInfo.offset = 0; } void addMachineBasicBlockOperand(MachineBasicBlock *MBB) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_MachineBasicBlock; Op.contents.MBB = MBB; -Op.offset = 0; +Op.auxInfo.offset = 0; } /// addFrameIndexOperand - Add an abstract frame index to the instruction @@ -459,7 +474,7 @@ MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_FrameIndex; Op.contents.immedVal = Idx; -Op.offset = 0; +Op.auxInfo.offset = 0; } /// addConstantPoolndexOperand - Add a constant pool object index to the @@ -469,7 +484,7 @@ MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_ConstantPoolIndex; Op.contents.immedVal = Idx; -Op.offset = Offset; +Op.auxInfo.offset = Offset; } /// addJumpTableIndexOperand - Add a jump table object index to the @@ -479,14 +494,14 @@ MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_JumpTableIndex; Op.contents.immedVal = Idx; -Op.offset = 0; +Op.auxInfo.offset = 0; } void addGlobalAddressOperand(GlobalValue *GV, int Offset) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_GlobalAddress; Op.contents.GV = GV; -Op.offset = Offset; +Op.auxInfo.offset = Offset; } /// addExternalSymbolOperand - Add an external symbol operand to this instr @@ -495,7 +510,7 @@ MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_ExternalSymbol; Op.contents.SymbolName = SymName; -Op.offset = 0; +Op.auxInfo.offset = 0; } //======// ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.216 - 1.217 --- Log message: Rename findRegisterUseOperand to findRegisterUseOperandIdx to avoid confusion. --- Diffs of the changes: (+2 -2) MachineInstr.h |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.216 llvm/include/llvm/CodeGen/MachineInstr.h:1.217 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.216 Wed Apr 25 02:24:13 2007 +++ llvm/include/llvm/CodeGen/MachineInstr.hThu Apr 26 13:59:33 2007 @@ -390,10 +390,10 @@ delete removeFromParent(); } - /// findRegisterUseOperand() - Returns the operand index that is a use of + /// findRegisterUseOperandIdx() - Returns the operand index that is a use of /// the specific register or -1 if it is not found. It further tightening /// the search criteria to a use that kills the register if isKill is true. - int findRegisterUseOperand(unsigned Reg, bool isKill = false); + int findRegisterUseOperandIdx(unsigned Reg, bool isKill = false); /// findRegisterDefOperand() - Returns the MachineOperand that is a def of /// the specific register or NULL if it is not found. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.215 - 1.216 --- Log message: Minor speed tweak. --- Diffs of the changes: (+3 -4) MachineInstr.h |7 +++ 1 files changed, 3 insertions(+), 4 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.215 llvm/include/llvm/CodeGen/MachineInstr.h:1.216 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.215 Mon Mar 26 17:37:45 2007 +++ llvm/include/llvm/CodeGen/MachineInstr.hWed Apr 25 02:24:13 2007 @@ -517,13 +517,12 @@ MachineOperand AddNewOperand(bool IsImp = false) { assert((IsImp || !OperandsComplete()) Trying to add an operand to a machine instr that is already done!); -if (NumImplicitOps == 0) { // This is true most of the time. +if (IsImp || NumImplicitOps == 0) { // This is true most of the time. Operands.push_back(MachineOperand()); return Operands.back(); -} else { - return *Operands.insert(Operands.begin()+Operands.size()-NumImplicitOps, - MachineOperand()); } +return *Operands.insert(Operands.begin()+Operands.size()-NumImplicitOps, +MachineOperand()); } /// addImplicitDefUseOperands - Add all implicit def and use operands to ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.214 - 1.215 --- Log message: Change findRegisterUseOperand() to return operand index instead. --- Diffs of the changes: (+3 -3) MachineInstr.h |6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.214 llvm/include/llvm/CodeGen/MachineInstr.h:1.215 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.214 Tue Feb 27 15:06:57 2007 +++ llvm/include/llvm/CodeGen/MachineInstr.hMon Mar 26 17:37:45 2007 @@ -390,10 +390,10 @@ delete removeFromParent(); } - /// findRegisterUseOperand() - Returns the MachineOperand that is a use of - /// the specific register or NULL if it is not found. It further tightening + /// findRegisterUseOperand() - Returns the operand index that is a use of + /// the specific register or -1 if it is not found. It further tightening /// the search criteria to a use that kills the register if isKill is true. - MachineOperand *findRegisterUseOperand(unsigned Reg, bool isKill = false); + int findRegisterUseOperand(unsigned Reg, bool isKill = false); /// findRegisterDefOperand() - Returns the MachineOperand that is a def of /// the specific register or NULL if it is not found. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.213 - 1.214 --- Log message: Pass IsImp, IsKill, and IsDead to ChangeToRegister. --- Diffs of the changes: (+5 -4) MachineInstr.h |9 + 1 files changed, 5 insertions(+), 4 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.213 llvm/include/llvm/CodeGen/MachineInstr.h:1.214 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.213 Thu Feb 22 19:03:39 2007 +++ llvm/include/llvm/CodeGen/MachineInstr.hTue Feb 27 15:06:57 2007 @@ -280,13 +280,14 @@ /// ChangeToRegister - Replace this operand with a new register operand of /// the specified value. If an operand is known to be an register already, /// the setReg method should be used. - void ChangeToRegister(unsigned Reg, bool isDef) { + void ChangeToRegister(unsigned Reg, bool isDef, bool isImp = false, +bool isKill = false, bool isDead = false) { opType = MO_Register; contents.RegNo = Reg; IsDef = isDef; -IsImp = false; -IsKill = false; -IsDead = false; +IsImp = isImp; +IsKill = isKill; +IsDead = isDead; } friend std::ostream operator(std::ostream os, const MachineOperand mop) { ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.212 - 1.213 --- Log message: Use findRegisterUseOperand to find a kill of particular register. --- Diffs of the changes: (+3 -2) MachineInstr.h |5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.212 llvm/include/llvm/CodeGen/MachineInstr.h:1.213 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.212 Mon Feb 19 15:49:53 2007 +++ llvm/include/llvm/CodeGen/MachineInstr.hThu Feb 22 19:03:39 2007 @@ -390,8 +390,9 @@ } /// findRegisterUseOperand() - Returns the MachineOperand that is a use of - /// the specific register or NULL if it is not found. - MachineOperand *findRegisterUseOperand(unsigned Reg); + /// the specific register or NULL if it is not found. It further tightening + /// the search criteria to a use that kills the register if isKill is true. + MachineOperand *findRegisterUseOperand(unsigned Reg, bool isKill = false); /// findRegisterDefOperand() - Returns the MachineOperand that is a def of /// the specific register or NULL if it is not found. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.202 - 1.203 --- Log message: - MachineInstr now keeps a ptr to TargetInstrDescriptor instead of Opcode. - Remove the ugly TargetInstrDescriptors hack. --- Diffs of the changes: (+11 -6) MachineInstr.h | 17 +++-- 1 files changed, 11 insertions(+), 6 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.202 llvm/include/llvm/CodeGen/MachineInstr.h:1.203 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.202 Tue Nov 28 16:21:29 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hThu Nov 30 01:07:25 2006 @@ -299,7 +299,7 @@ /// MachineInstr - Representation of each machine instruction. /// class MachineInstr { - short Opcode; // the opcode + const TargetInstrDescriptor *TID; // Instruction descriptor. unsigned short NumImplicitOps;// Number of implicit operands (which // are determined at construction time). @@ -319,7 +319,7 @@ public: /// MachineInstr ctor - This constructor creates a dummy MachineInstr with - /// opcode 0 and no operands. + /// TID NULL and no operands. MachineInstr(); /// MachineInstr ctor - This constructor create a MachineInstr and add the @@ -337,10 +337,14 @@ const MachineBasicBlock* getParent() const { return parent; } MachineBasicBlock* getParent() { return parent; } + + /// getInstrDescriptor - Returns the target instruction descriptor of this + /// MachineInstr. + const TargetInstrDescriptor *getInstrDescriptor() const { return TID; } /// getOpcode - Returns the opcode of this MachineInstr. /// - const int getOpcode() const { return Opcode; } + const int getOpcode() const; /// Access to explicit operands of the instruction. /// @@ -500,9 +504,10 @@ // Accessors used to modify instructions in place. // - /// setOpcode - Replace the opcode of the current instruction with a new one. + /// setInstrDescriptor - Replace the instruction descriptor (thus opcode) of + /// the current instruction with a new one. /// - void setOpcode(unsigned Op) { Opcode = Op; } + void setInstrDescriptor(const TargetInstrDescriptor tid) { TID = tid; } /// RemoveOperand - Erase an operand from an instruction, leaving it with one /// fewer operand than it started with. @@ -525,7 +530,7 @@ /// addImplicitDefUseOperands - Add all implicit def and use operands to /// this instruction. - void addImplicitDefUseOperands(const TargetInstrDescriptor TID); + void addImplicitDefUseOperands(); }; //===--===// ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h MachineInstrBuilder.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.200 - 1.201 MachineInstrBuilder.h updated: 1.40 - 1.41 --- Log message: Change MachineInstr ctor's to take a TargetInstrDescriptor reference instead of opcode and number of operands. --- Diffs of the changes: (+30 -38) MachineInstr.h| 16 +++ MachineInstrBuilder.h | 52 +- 2 files changed, 30 insertions(+), 38 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.200 llvm/include/llvm/CodeGen/MachineInstr.h:1.201 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.200 Mon Nov 20 11:57:22 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hMon Nov 27 17:33:29 2006 @@ -27,7 +27,6 @@ class Value; class Function; class MachineBasicBlock; -class TargetInstrInfo; class TargetInstrDescriptor; class TargetMachine; class GlobalValue; @@ -296,7 +295,7 @@ /// class MachineInstr { short Opcode; // the opcode - short NumImplicitOps; // Number of implicit operands (which + unsigned short NumImplicitOps;// Number of implicit operands (which // are determined at construction time). std::vectorMachineOperand Operands; // the operands @@ -314,19 +313,20 @@ friend struct ilist_traitsMachineInstr; public: - /// MachineInstr ctor - This constructor reserves space for numOperand - /// operands. - MachineInstr(short Opcode, unsigned numOperands); + /// MachineInstr ctor - This constructor creates a dummy MachineInstr with + /// opcode 0 and no operands. + MachineInstr(); /// MachineInstr ctor - This constructor create a MachineInstr and add the - /// implicit operands. It reserves space for numOperand operands. - MachineInstr(const TargetInstrInfo TII, short Opcode, unsigned numOperands); + /// implicit operands. It reserves space for number of operands specified by + /// TargetInstrDescriptor. + MachineInstr(const TargetInstrDescriptor TID); /// MachineInstr ctor - Work exactly the same as the ctor above, except that /// the MachineInstr is created and added to the end of the specified basic /// block. /// - MachineInstr(MachineBasicBlock *MBB, short Opcode, unsigned numOps); + MachineInstr(MachineBasicBlock *MBB, const TargetInstrDescriptor TID); ~MachineInstr(); Index: llvm/include/llvm/CodeGen/MachineInstrBuilder.h diff -u llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.40 llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.41 --- llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.40Mon Nov 13 17:32:33 2006 +++ llvm/include/llvm/CodeGen/MachineInstrBuilder.h Mon Nov 27 17:33:29 2006 @@ -19,10 +19,11 @@ #include llvm/CodeGen/MachineBasicBlock.h #include llvm/CodeGen/MachineFunction.h -#include llvm/Target/TargetMachine.h namespace llvm { +class TargetInstrDescriptor; + class MachineInstrBuilder { MachineInstr *MI; public: @@ -83,36 +84,29 @@ }; /// BuildMI - Builder interface. Specify how to create the initial instruction -/// itself. NumOperands is the number of operands to the machine instruction to -/// allow for memory efficient representation of machine instructions. +/// itself. /// -inline MachineInstrBuilder BuildMI(const TargetInstrInfo TII, int Opcode, - unsigned NumOperands) { - return MachineInstrBuilder(new MachineInstr(TII, Opcode, NumOperands)); +inline MachineInstrBuilder BuildMI(const TargetInstrDescriptor TID) { + return MachineInstrBuilder(new MachineInstr(TID)); } /// BuildMI - This version of the builder sets up the first operand as a -/// destination virtual register. NumOperands is the number of additional add* -/// calls that are expected, not including the destination register. +/// destination virtual register. /// -inline MachineInstrBuilder BuildMI(const TargetInstrInfo TII, int Opcode, -unsigned NumOperands, unsigned DestReg) { - return MachineInstrBuilder(new MachineInstr(TII, Opcode, NumOperands+1)) - .addReg(DestReg, true); + inline MachineInstrBuilder BuildMI(const TargetInstrDescriptor TID, + unsigned DestReg) { + return MachineInstrBuilder(new MachineInstr(TID)).addReg(DestReg, true); } /// BuildMI - This version of the builder inserts the newly-built /// instruction before the given position in the given MachineBasicBlock, and /// sets up the first operand as a destination virtual register. -/// NumOperands is the number of additional add* calls that are expected, -/// not including the destination register. /// inline MachineInstrBuilder BuildMI(MachineBasicBlock BB, MachineBasicBlock::iterator I, - int Opcode, unsigned NumOperands, + const
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.196 - 1.197 --- Log message: Add copyKillDeadInfo to copy kill / dead info; other minor updates. --- Diffs of the changes: (+28 -8) MachineInstr.h | 36 1 files changed, 28 insertions(+), 8 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.196 llvm/include/llvm/CodeGen/MachineInstr.h:1.197 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.196 Mon Nov 13 17:30:45 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hWed Nov 15 14:48:17 2006 @@ -206,19 +206,19 @@ return IsDead; } void setIsKill() { -assert(isRegister() Wrong MachineOperand accessor); +assert(isRegister() !IsDef Wrong MachineOperand accessor); IsKill = true; } void setIsDead() { -assert(isRegister() Wrong MachineOperand accessor); +assert(isRegister() IsDef Wrong MachineOperand accessor); IsDead = true; } void unsetIsKill() { -assert(isRegister() Wrong MachineOperand accessor); +assert(isRegister() !IsDef Wrong MachineOperand accessor); IsKill = false; } void unsetIsDead() { -assert(isRegister() Wrong MachineOperand accessor); +assert(isRegister() IsDef Wrong MachineOperand accessor); IsDead = false; } @@ -261,7 +261,7 @@ } /// isIdenticalTo - Return true if this operand is identical to the specified - /// operand. + /// operand. Note: This method ignores isKill and isDead properties. bool isIdenticalTo(const MachineOperand Other) const; /// ChangeToImmediate - Replace this operand with a new immediate operand of @@ -295,13 +295,13 @@ /// class MachineInstr { short Opcode; // the opcode + short NumImplicitOps; // Number of implicit operands (which +// are determined at construction time). + std::vectorMachineOperand Operands; // the operands MachineInstr* prev, *next;// links for our intrusive list MachineBasicBlock* parent;// pointer to the owning basic block - unsigned NumImplicitOps; // Number of implicit operands (which -// are determined at construction time). - // OperandComplete - Return true if it's illegal to add a new operand bool OperandsComplete() const; @@ -376,6 +376,26 @@ delete removeFromParent(); } + /// copyKillDeadInfo - Copies kill / dead operand properties from MI. + /// + void copyKillDeadInfo(const MachineInstr *MI) { +for (unsigned i = 0, e = MI-getNumOperands(); i != e; ++i) { + const MachineOperand MO = MI-getOperand(i); + if (MO.isReg() (MO.isKill() || MO.isDead())) { +for (unsigned j = 0, ee = getNumOperands(); j != ee; ++j) { + MachineOperand MOp = getOperand(j); + if (MOp.isIdenticalTo(MO)) { +if (MO.isKill()) + MOp.setIsKill(); +else + MOp.setIsDead(); +break; + } +} + } +} + } + // // Debugging support // ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.197 - 1.198 --- Log message: ChangeToRegister should clear IsImp bit. --- Diffs of the changes: (+4 -4) MachineInstr.h |8 1 files changed, 4 insertions(+), 4 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.197 llvm/include/llvm/CodeGen/MachineInstr.h:1.198 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.197 Wed Nov 15 14:48:17 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hWed Nov 15 17:55:03 2006 @@ -275,13 +275,13 @@ /// ChangeToRegister - Replace this operand with a new register operand of /// the specified value. If an operand is known to be an register already, /// the setReg method should be used. - void ChangeToRegister(unsigned Reg, bool isDef, -bool isKill = false, bool isDead = false) { + void ChangeToRegister(unsigned Reg, bool isDef) { opType = MO_Register; contents.RegNo = Reg; IsDef = isDef; -IsKill = isKill; -IsDead = isDead; +IsImp = false; +IsKill = false; +IsDead = false; } friend std::ostream operator(std::ostream os, const MachineOperand mop); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.195 - 1.196 --- Log message: - Let MachineInstr ctors add implicit def and use operands. Other operands will be inserted before these operands. If the opcode changes (by setOpcode), the implicit operands are updated as well. - Added IsKill, IsDead fields to MachineOperand in preparation for changes that move kill / dead info to MachineInstr's. --- Diffs of the changes: (+65 -10) MachineInstr.h | 75 + 1 files changed, 65 insertions(+), 10 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.195 llvm/include/llvm/CodeGen/MachineInstr.h:1.196 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.195 Sat Nov 11 04:19:03 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hMon Nov 13 17:30:45 2006 @@ -26,6 +26,8 @@ class Value; class Function; class MachineBasicBlock; +class TargetInstrInfo; +class TargetInstrDescriptor; class TargetMachine; class GlobalValue; @@ -61,6 +63,12 @@ MachineOperandType opType:8; // Discriminate the union. bool IsDef : 1; // True if this is a def, false if this is a use. bool IsImp : 1; // True if this is an implicit def or use. + + bool IsKill : 1; // True if this is a reg use and the reg is dead + // immediately after the read. + bool IsDead : 1; // True if this is a reg def and the reg is dead + // immediately after the write. i.e. A register + // that is defined but never used. /// offset - Offset to address of global or external, only valid for /// MO_GlobalAddress, MO_ExternalSym and MO_ConstantPoolIndex @@ -80,6 +88,8 @@ Op.contents.immedVal = Val; Op.IsDef = false; Op.IsImp = false; +Op.IsKill = false; +Op.IsDead = false; Op.offset = 0; return Op; } @@ -88,6 +98,8 @@ contents = MO.contents; IsDef= MO.IsDef; IsImp= MO.IsImp; +IsKill = MO.IsKill; +IsDead = MO.IsDead; opType = MO.opType; offset = MO.offset; return *this; @@ -185,6 +197,31 @@ IsImp = true; } + bool isKill() const { +assert(isRegister() Wrong MachineOperand accessor); +return IsKill; + } + bool isDead() const { +assert(isRegister() Wrong MachineOperand accessor); +return IsDead; + } + void setIsKill() { +assert(isRegister() Wrong MachineOperand accessor); +IsKill = true; + } + void setIsDead() { +assert(isRegister() Wrong MachineOperand accessor); +IsDead = true; + } + void unsetIsKill() { +assert(isRegister() Wrong MachineOperand accessor); +IsKill = false; + } + void unsetIsDead() { +assert(isRegister() Wrong MachineOperand accessor); +IsDead = false; + } + /// getReg - Returns the register number. /// unsigned getReg() const { @@ -238,10 +275,13 @@ /// ChangeToRegister - Replace this operand with a new register operand of /// the specified value. If an operand is known to be an register already, /// the setReg method should be used. - void ChangeToRegister(unsigned Reg, bool isDef) { + void ChangeToRegister(unsigned Reg, bool isDef, +bool isKill = false, bool isDead = false) { opType = MO_Register; contents.RegNo = Reg; IsDef = isDef; +IsKill = isKill; +IsDead = isDead; } friend std::ostream operator(std::ostream os, const MachineOperand mop); @@ -259,6 +299,9 @@ MachineInstr* prev, *next;// links for our intrusive list MachineBasicBlock* parent;// pointer to the owning basic block + unsigned NumImplicitOps; // Number of implicit operands (which +// are determined at construction time). + // OperandComplete - Return true if it's illegal to add a new operand bool OperandsComplete() const; @@ -270,10 +313,14 @@ friend struct ilist_traitsMachineInstr; public: - /// MachineInstr ctor - This constructor reserve's space for numOperand + /// MachineInstr ctor - This constructor reserves space for numOperand /// operands. MachineInstr(short Opcode, unsigned numOperands); + /// MachineInstr ctor - This constructor create a MachineInstr and add the + /// implicit operands. It reserves space for numOperand operands. + MachineInstr(const TargetInstrInfo TII, short Opcode, unsigned numOperands); + /// MachineInstr ctor - Work exactly the same as the ctor above, except that /// the MachineInstr is created and added to the end of the specified basic /// block. @@ -342,11 +389,14 @@ /// addRegOperand - Add a register operand. /// - void addRegOperand(unsigned Reg, bool IsDef, bool IsImp = false) { + void addRegOperand(unsigned Reg, bool IsDef, bool IsImp = false, +
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h MachineInstrBuilder.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.192 - 1.193 MachineInstrBuilder.h updated: 1.37 - 1.38 --- Log message: Add implicit def / use operands to MachineInstr. --- Diffs of the changes: (+20 -6) MachineInstr.h| 21 + MachineInstrBuilder.h |5 +++-- 2 files changed, 20 insertions(+), 6 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.192 llvm/include/llvm/CodeGen/MachineInstr.h:1.193 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.192 Sat Oct 28 13:18:36 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hFri Nov 10 02:32:14 2006 @@ -60,6 +60,7 @@ MachineOperandType opType:8; // Discriminate the union. bool IsDef : 1; // True if this is a def, false if this is a use. + bool IsImp : 1; // True if this is an implicit def or use. /// offset - Offset to address of global or external, only valid for /// MO_GlobalAddress, MO_ExternalSym and MO_ConstantPoolIndex @@ -78,6 +79,7 @@ Op.opType = MachineOperand::MO_Immediate; Op.contents.immedVal = Val; Op.IsDef = false; +Op.IsImp = false; Op.offset = 0; return Op; } @@ -85,6 +87,7 @@ const MachineOperand operator=(const MachineOperand MO) { contents = MO.contents; IsDef= MO.IsDef; +IsImp= MO.IsImp; opType = MO.opType; offset = MO.offset; return *this; @@ -173,6 +176,15 @@ IsDef = true; } + bool isImplicit() const { +assert(isRegister() Wrong MachineOperand accessor); +return IsImp; + } + bool setImplicit() { +assert(isRegister() Wrong MachineOperand accessor); +IsImp = true; + } + /// getReg - Returns the register number. /// unsigned getReg() const { @@ -330,10 +342,11 @@ /// addRegOperand - Add a register operand. /// - void addRegOperand(unsigned Reg, bool IsDef) { -MachineOperand Op = AddNewOperand(); + void addRegOperand(unsigned Reg, bool IsDef, bool IsImp = false) { +MachineOperand Op = AddNewOperand(IsImp); Op.opType = MachineOperand::MO_Register; Op.IsDef = IsDef; +Op.IsImp = IsImp; Op.contents.RegNo = Reg; Op.offset = 0; } @@ -415,8 +428,8 @@ Operands.erase(Operands.begin()+i); } private: - MachineOperand AddNewOperand() { -assert(!OperandsComplete() + MachineOperand AddNewOperand(bool IsImp = false) { +assert((IsImp || !OperandsComplete()) Trying to add an operand to a machine instr that is already done!); Operands.push_back(MachineOperand()); return Operands.back(); Index: llvm/include/llvm/CodeGen/MachineInstrBuilder.h diff -u llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.37 llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.38 --- llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.37Mon Sep 4 21:31:13 2006 +++ llvm/include/llvm/CodeGen/MachineInstrBuilder.h Fri Nov 10 02:32:14 2006 @@ -33,8 +33,9 @@ /// addReg - Add a new virtual register operand... /// - const MachineInstrBuilder addReg(int RegNo, bool isDef = false) const { -MI-addRegOperand(RegNo, isDef); + const MachineInstrBuilder addReg(int RegNo, bool isDef = false, +bool isImp = false) const { +MI-addRegOperand(RegNo, isDef, isImp); return *this; } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.193 - 1.194 --- Log message: Shut up the warning. --- Diffs of the changes: (+1 -1) MachineInstr.h |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.193 llvm/include/llvm/CodeGen/MachineInstr.h:1.194 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.193 Fri Nov 10 02:32:14 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hFri Nov 10 08:44:12 2006 @@ -180,7 +180,7 @@ assert(isRegister() Wrong MachineOperand accessor); return IsImp; } - bool setImplicit() { + void setImplicit() { assert(isRegister() Wrong MachineOperand accessor); IsImp = true; } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.191 - 1.192 --- Log message: add a method for hacking on JTIdx's --- Diffs of the changes: (+4 -0) MachineInstr.h |4 1 files changed, 4 insertions(+) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.191 llvm/include/llvm/CodeGen/MachineInstr.h:1.192 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.191 Fri Oct 20 17:44:45 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hSat Oct 28 13:18:36 2006 @@ -206,6 +206,10 @@ assert(isConstantPoolIndex() Wrong MachineOperand accessor); contents.immedVal = Idx; } + void setJumpTableIndex(unsigned Idx) { +assert(isJumpTableIndex() Wrong MachineOperand accessor); +contents.immedVal = Idx; + } /// isIdenticalTo - Return true if this operand is identical to the specified /// operand. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.188 - 1.189 --- Log message: add method --- Diffs of the changes: (+11 -2) MachineInstr.h | 13 +++-- 1 files changed, 11 insertions(+), 2 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.188 llvm/include/llvm/CodeGen/MachineInstr.h:1.189 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.188 Thu Oct 5 20:16:29 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hFri Oct 20 13:00:03 2006 @@ -70,9 +70,18 @@ MachineOperand(const MachineOperand M) { *this = M; } - + ~MachineOperand() {} - + + static MachineOperand CreateImm(int64_t Val) { +MachineOperand Op; +Op.opType = MachineOperand::MO_Immediate; +Op.contents.immedVal = Val; +Op.IsDef = false; +Op.offset = 0; +return Op; + } + const MachineOperand operator=(const MachineOperand MO) { contents = MO.contents; IsDef= MO.IsDef; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.189 - 1.190 --- Log message: add isIdenticalTo method to machineinstr/operand. --- Diffs of the changes: (+19 -0) MachineInstr.h | 19 +++ 1 files changed, 19 insertions(+) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.189 llvm/include/llvm/CodeGen/MachineInstr.h:1.190 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.189 Fri Oct 20 13:00:03 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hFri Oct 20 17:39:36 2006 @@ -118,6 +118,10 @@ assert(isImm() Wrong MachineOperand accessor); return contents.immedVal; } + MachineBasicBlock *getMBB() const { +assert(isMachineBasicBlock() Wrong MachineOperand accessor); +return contents.MBB; + } MachineBasicBlock *getMachineBasicBlock() const { assert(isMachineBasicBlock() Wrong MachineOperand accessor); return contents.MBB; @@ -203,6 +207,9 @@ contents.immedVal = Idx; } + /// isIdenticalTo - Return true if this operand is identical to the specified + /// operand. + bool isIdenticalTo(const MachineOperand Other) const; /// ChangeToImmediate - Replace this operand with a new immediate operand of /// the specified value. If an operand is known to be an immediate already, @@ -279,6 +286,18 @@ return Operands[i]; } + + /// isIdenticalTo - Return true if this instruction is identical to (same + /// opcode and same operands as) the specified instruction. + bool isIdenticalTo(const MachineInstr *Other) const { +if (Other-getOpcode() != getOpcode() || +getNumOperands() != getNumOperands()) + return false; +for (unsigned i = 0, e = getNumOperands(); i != e; ++i) + if (!getOperand(i).isIdenticalTo(Other-getOperand(i))) +return false; +return true; + } /// clone - Create a copy of 'this' instruction that is identical in /// all ways except the the instruction has no parent, prev, or next. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.190 - 1.191 --- Log message: typo --- Diffs of the changes: (+1 -1) MachineInstr.h |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.190 llvm/include/llvm/CodeGen/MachineInstr.h:1.191 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.190 Fri Oct 20 17:39:36 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hFri Oct 20 17:44:45 2006 @@ -291,7 +291,7 @@ /// opcode and same operands as) the specified instruction. bool isIdenticalTo(const MachineInstr *Other) const { if (Other-getOpcode() != getOpcode() || -getNumOperands() != getNumOperands()) +Other-getNumOperands() != getNumOperands()) return false; for (unsigned i = 0, e = getNumOperands(); i != e; ++i) if (!getOperand(i).isIdenticalTo(Other-getOperand(i))) ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.187 - 1.188 --- Log message: add an accessor --- Diffs of the changes: (+5 -0) MachineInstr.h |5 + 1 files changed, 5 insertions(+) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.187 llvm/include/llvm/CodeGen/MachineInstr.h:1.188 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.187 Tue Sep 5 15:20:04 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hThu Oct 5 20:16:29 2006 @@ -189,6 +189,11 @@ Wrong MachineOperand accessor); offset = Offset; } + void setConstantPoolIndex(unsigned Idx) { +assert(isConstantPoolIndex() Wrong MachineOperand accessor); +contents.immedVal = Idx; + } + /// ChangeToImmediate - Replace this operand with a new immediate operand of /// the specified value. If an operand is known to be an immediate already, ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.185 - 1.186 --- Log message: Initialize IsDef of all non-register MachineOperand to false. --- Diffs of the changes: (+7 -0) MachineInstr.h |7 +++ 1 files changed, 7 insertions(+) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.185 llvm/include/llvm/CodeGen/MachineInstr.h:1.186 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.185 Mon Sep 4 21:31:13 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hTue Sep 5 13:56:02 2006 @@ -295,6 +295,7 @@ void addImmOperand(int64_t Val) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_Immediate; +Op.IsDef = false; Op.contents.immedVal = Val; Op.offset = 0; } @@ -302,6 +303,7 @@ void addMachineBasicBlockOperand(MachineBasicBlock *MBB) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_MachineBasicBlock; +Op.IsDef = false; Op.contents.MBB = MBB; Op.offset = 0; } @@ -311,6 +313,7 @@ void addFrameIndexOperand(unsigned Idx) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_FrameIndex; +Op.IsDef = false; Op.contents.immedVal = Idx; Op.offset = 0; } @@ -321,6 +324,7 @@ void addConstantPoolIndexOperand(unsigned Idx, int Offset) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_ConstantPoolIndex; +Op.IsDef = false; Op.contents.immedVal = Idx; Op.offset = Offset; } @@ -331,6 +335,7 @@ void addJumpTableIndexOperand(unsigned Idx) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_JumpTableIndex; +Op.IsDef = false; Op.contents.immedVal = Idx; Op.offset = 0; } @@ -338,6 +343,7 @@ void addGlobalAddressOperand(GlobalValue *GV, int Offset) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_GlobalAddress; +Op.IsDef = false; Op.contents.GV = GV; Op.offset = Offset; } @@ -347,6 +353,7 @@ void addExternalSymbolOperand(const char *SymName) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_ExternalSymbol; +Op.IsDef = false; Op.contents.SymbolName = SymName; Op.offset = 0; } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.186 - 1.187 --- Log message: IsDef can only be accessed / set if operand is a register. --- Diffs of the changes: (+16 -11) MachineInstr.h | 27 --- 1 files changed, 16 insertions(+), 11 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.186 llvm/include/llvm/CodeGen/MachineInstr.h:1.187 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.186 Tue Sep 5 13:56:02 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hTue Sep 5 15:20:04 2006 @@ -143,10 +143,22 @@ return contents.SymbolName; } - bool isUse() const { return !IsDef; } - bool isDef() const { return IsDef; } - void setIsUse() { IsDef = false; } - void setIsDef() { IsDef = true; } + bool isUse() const { +assert(isRegister() Wrong MachineOperand accessor); +return !IsDef; + } + bool isDef() const { +assert(isRegister() Wrong MachineOperand accessor); +return IsDef; + } + void setIsUse() { +assert(isRegister() Wrong MachineOperand accessor); +IsDef = false; + } + void setIsDef() { +assert(isRegister() Wrong MachineOperand accessor); +IsDef = true; + } /// getReg - Returns the register number. /// @@ -295,7 +307,6 @@ void addImmOperand(int64_t Val) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_Immediate; -Op.IsDef = false; Op.contents.immedVal = Val; Op.offset = 0; } @@ -303,7 +314,6 @@ void addMachineBasicBlockOperand(MachineBasicBlock *MBB) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_MachineBasicBlock; -Op.IsDef = false; Op.contents.MBB = MBB; Op.offset = 0; } @@ -313,7 +323,6 @@ void addFrameIndexOperand(unsigned Idx) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_FrameIndex; -Op.IsDef = false; Op.contents.immedVal = Idx; Op.offset = 0; } @@ -324,7 +333,6 @@ void addConstantPoolIndexOperand(unsigned Idx, int Offset) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_ConstantPoolIndex; -Op.IsDef = false; Op.contents.immedVal = Idx; Op.offset = Offset; } @@ -335,7 +343,6 @@ void addJumpTableIndexOperand(unsigned Idx) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_JumpTableIndex; -Op.IsDef = false; Op.contents.immedVal = Idx; Op.offset = 0; } @@ -343,7 +350,6 @@ void addGlobalAddressOperand(GlobalValue *GV, int Offset) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_GlobalAddress; -Op.IsDef = false; Op.contents.GV = GV; Op.offset = Offset; } @@ -353,7 +359,6 @@ void addExternalSymbolOperand(const char *SymName) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_ExternalSymbol; -Op.IsDef = false; Op.contents.SymbolName = SymName; Op.offset = 0; } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h MachineInstrBuilder.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.172 - 1.173 MachineInstrBuilder.h updated: 1.32 - 1.33 --- Log message: Change value in MachineOperand to be a GlobalValue, as that is the only thing that can be in it. Remove a dead method. --- Diffs of the changes: (+12 -33) MachineInstr.h| 37 +++-- MachineInstrBuilder.h |8 +--- 2 files changed, 12 insertions(+), 33 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.172 llvm/include/llvm/CodeGen/MachineInstr.h:1.173 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.172 Wed May 3 20:26:39 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hThu May 4 12:02:50 2006 @@ -74,15 +74,8 @@ private: union { -Value* value; // BasicBlockVal for a label operand. -// ConstantVal for a non-address immediate. -// Virtual register for an SSA operand, -// including hidden operands required for -// the generated machine code. -// LLVM global for MO_GlobalAddress. - +GlobalValue *GV;// LLVM global for MO_GlobalAddress. int64_t immedVal; // Constant value for an explicit constant - MachineBasicBlock *MBB; // For MO_MachineBasicBlock type const char *SymbolName; // For MO_ExternalSymbol type } contents; @@ -90,36 +83,32 @@ char flags; // see bit field definitions above MachineOperandType opType:8; // Pack into 8 bits efficiently after flags. union { -int regNum; // register number for an explicit register -// will be set for a value after reg allocation - -int offset; // Offset to address of global or external, only -// valid for MO_GlobalAddress, MO_ExternalSym -// and MO_ConstantPoolIndex +int regNum; // register number for an explicit register +int offset; // Offset to address of global or external, only +// valid for MO_GlobalAddress, MO_ExternalSym +// and MO_ConstantPoolIndex } extra; - void zeroContents () { -memset (contents, 0, sizeof (contents)); -memset (extra, 0, sizeof (extra)); + void zeroContents() { +contents.immedVal = 0; +extra.offset = 0; } MachineOperand(int64_t ImmVal, MachineOperandType OpTy, int Offset = 0) : flags(0), opType(OpTy) { -zeroContents (); contents.immedVal = ImmVal; extra.offset = Offset; } MachineOperand(int Reg, MachineOperandType OpTy, UseType UseTy) : flags(UseTy), opType(OpTy) { -zeroContents (); +zeroContents(); extra.regNum = Reg; } MachineOperand(GlobalValue *V, int Offset = 0) : flags(MachineOperand::Use), opType(MachineOperand::MO_GlobalAddress) { -zeroContents (); -contents.value = (Value*)V; +contents.GV = V; extra.offset = Offset; } @@ -206,7 +195,7 @@ } GlobalValue *getGlobal() const { assert(isGlobalAddress() Wrong MachineOperand accessor); -return (GlobalValue*)contents.value; +return contents.GV; } int getOffset() const { assert((isGlobalAddress() || isExternalSymbol() || isConstantPoolIndex()) @@ -476,10 +465,6 @@ // Access to set the operands when building the machine instruction // - void SetMachineOperandVal(unsigned i, -MachineOperand::MachineOperandType operandType, -Value* V); - void SetMachineOperandConst(unsigned i, MachineOperand::MachineOperandType operandType, int intValue); Index: llvm/include/llvm/CodeGen/MachineInstrBuilder.h diff -u llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.32 llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.33 --- llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.32Wed May 3 20:15:02 2006 +++ llvm/include/llvm/CodeGen/MachineInstrBuilder.h Thu May 4 12:02:51 2006 @@ -8,13 +8,7 @@ //===--===// // // This file exposes a function named BuildMI, which is useful for dramatically -// simplifying how MachineInstr's are created. Instead of using code like this: -// -// M = new MachineInstr(X86::ADDrr8); -// M-SetMachineOperandVal(0, MachineOperand::MO_VirtualRegister, argVal1); -// M-SetMachineOperandVal(1, MachineOperand::MO_VirtualRegister, argVal2); -// -// we can now use code like this: +// simplifying how MachineInstr's are created. It allows use of code like this: // // M = BuildMI(X86::ADDrr8, 2).addReg(argVal1).addReg(argVal2); // ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h MachineInstrBuilder.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.173 - 1.174 MachineInstrBuilder.h updated: 1.33 - 1.34 --- Log message: There shalt be only one immediate operand type! --- Diffs of the changes: (+4 -25) MachineInstr.h| 22 -- MachineInstrBuilder.h |7 --- 2 files changed, 4 insertions(+), 25 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.173 llvm/include/llvm/CodeGen/MachineInstr.h:1.174 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.173 Thu May 4 12:02:50 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hThu May 4 12:21:19 2006 @@ -62,8 +62,7 @@ enum MachineOperandType { MO_VirtualRegister, // virtual register for *value -MO_SignExtendedImmed, -MO_UnextendedImmed, +MO_Immediate, // Immediate Operand MO_MachineBasicBlock, // MachineBasicBlock reference MO_FrameIndex, // Abstract Stack Frame Index MO_ConstantPoolIndex, // Address of indexed Constant in Constant Pool @@ -160,9 +159,7 @@ /// Accessors that tell you what kind of MachineOperand you're looking at. /// bool isMachineBasicBlock() const { return opType == MO_MachineBasicBlock; } - bool isImmediate() const { -return opType == MO_SignExtendedImmed || opType == MO_UnextendedImmed; - } + bool isImmediate() const { return opType == MO_Immediate; } bool isFrameIndex() const { return opType == MO_FrameIndex; } bool isConstantPoolIndex() const { return opType == MO_ConstantPoolIndex; } bool isJumpTableIndex() const { return opType == MO_JumpTableIndex; } @@ -380,7 +377,7 @@ assert(!OperandsComplete() Trying to add an operand to a machine instr that is already done!); operands.push_back( - MachineOperand(intValue, MachineOperand::MO_UnextendedImmed)); + MachineOperand(intValue, MachineOperand::MO_Immediate)); } /// addZeroExtImm64Operand - Add a zero extended 64-bit constant argument @@ -389,18 +386,7 @@ void addZeroExtImm64Operand(uint64_t intValue) { assert(!OperandsComplete() Trying to add an operand to a machine instr that is already done!); -operands.push_back( - MachineOperand(intValue, MachineOperand::MO_UnextendedImmed)); - } - - /// addSignExtImmOperand - Add a zero extended constant argument to the - /// machine instruction. - /// - void addSignExtImmOperand(int intValue) { -assert(!OperandsComplete() - Trying to add an operand to a machine instr that is already done!); -operands.push_back( - MachineOperand(intValue, MachineOperand::MO_SignExtendedImmed)); +operands.push_back(MachineOperand(intValue, MachineOperand::MO_Immediate)); } void addMachineBasicBlockOperand(MachineBasicBlock *MBB) { Index: llvm/include/llvm/CodeGen/MachineInstrBuilder.h diff -u llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.33 llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.34 --- llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.33Thu May 4 12:02:51 2006 +++ llvm/include/llvm/CodeGen/MachineInstrBuilder.h Thu May 4 12:21:19 2006 @@ -47,13 +47,6 @@ return *this; } - /// addSImm - Add a new sign extended immediate operand... - /// - const MachineInstrBuilder addSImm(int val) const { -MI-addSignExtImmOperand(val); -return *this; - } - /// addZImm - Add a new zero extended immediate operand... /// const MachineInstrBuilder addZImm(unsigned Val) const { ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.174 - 1.175 --- Log message: Move some methods out of MachineInstr into MachineOperand --- Diffs of the changes: (+17 -10) MachineInstr.h | 27 +-- 1 files changed, 17 insertions(+), 10 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.174 llvm/include/llvm/CodeGen/MachineInstr.h:1.175 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.174 Thu May 4 12:21:19 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hThu May 4 12:52:22 2006 @@ -234,7 +234,7 @@ extra.regNum = Reg; } - void setImmedValue(int immVal) { + void setImmedValue(int64_t immVal) { assert(isImmediate() Wrong MachineOperand mutator); contents.immedVal = immVal; } @@ -245,6 +245,22 @@ Wrong MachineOperand accessor); extra.offset = Offset; } + + /// ChangeToImmediate - Replace this operand with a new immediate operand of + /// the specified value. If an operand is known to be an immediate already, + /// the setImmedValue method should be used. + void ChangeToImmediate(int64_t ImmVal) { +opType = MO_Immediate; +contents.immedVal = ImmVal; + } + + /// ChangeToRegister - Replace this operand with a new register operand of + /// the specified value. If an operand is known to be an register already, + /// the setReg method should be used. + void ChangeToRegister(unsigned Reg) { +opType = MO_VirtualRegister; +extra.regNum = Reg; + } friend std::ostream operator(std::ostream os, const MachineOperand mop); @@ -436,7 +452,6 @@ //======// // Accessors used to modify instructions in place. // - // FIXME: Move this stuff to MachineOperand itself! /// setOpcode - Replace the opcode of the current instruction with a new one. /// @@ -448,14 +463,6 @@ void RemoveOperand(unsigned i) { operands.erase(operands.begin()+i); } - - // Access to set the operands when building the machine instruction - // - void SetMachineOperandConst(unsigned i, - MachineOperand::MachineOperandType operandType, - int intValue); - - void SetMachineOperandReg(unsigned i, int regNum); }; //===--===// ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h MachineInstrBuilder.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.176 - 1.177 MachineInstrBuilder.h updated: 1.34 - 1.35 --- Log message: Rename MO_VirtualRegister - MO_Register. Clean up immediate handling. --- Diffs of the changes: (+19 -34) MachineInstr.h| 45 +++-- MachineInstrBuilder.h |8 2 files changed, 19 insertions(+), 34 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.176 llvm/include/llvm/CodeGen/MachineInstr.h:1.177 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.176 Thu May 4 12:56:20 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hThu May 4 13:05:42 2006 @@ -61,7 +61,7 @@ }; enum MachineOperandType { -MO_VirtualRegister, // virtual register for *value +MO_Register,// Register operand. MO_Immediate, // Immediate Operand MO_MachineBasicBlock, // MachineBasicBlock reference MO_FrameIndex, // Abstract Stack Frame Index @@ -93,12 +93,17 @@ extra.offset = 0; } - MachineOperand(int64_t ImmVal, MachineOperandType OpTy, int Offset = 0) -: flags(0), opType(OpTy) { + MachineOperand(int64_t ImmVal) : flags(0), opType(MO_Immediate) { contents.immedVal = ImmVal; -extra.offset = Offset; +extra.offset = 0; } + MachineOperand(unsigned Idx, MachineOperandType OpTy) +: flags(0), opType(OpTy) { +contents.immedVal = Idx; +extra.offset = 0; + } + MachineOperand(int Reg, MachineOperandType OpTy, UseType UseTy) : flags(UseTy), opType(OpTy) { zeroContents(); @@ -152,7 +157,7 @@ /// Accessors that tell you what kind of MachineOperand you're looking at. /// - bool isRegister() const { return opType == MO_VirtualRegister; } + bool isRegister() const { return opType == MO_Register; } bool isImmediate() const { return opType == MO_Immediate; } bool isMachineBasicBlock() const { return opType == MO_MachineBasicBlock; } bool isFrameIndex() const { return opType == MO_FrameIndex; } @@ -245,7 +250,7 @@ /// the specified value. If an operand is known to be an register already, /// the setReg method should be used. void ChangeToRegister(unsigned Reg) { -opType = MO_VirtualRegister; +opType = MO_Register; extra.regNum = Reg; } @@ -355,41 +360,21 @@ /// addRegOperand - Add a symbolic virtual register reference... /// - void addRegOperand(int reg, bool isDef) { -assert(!OperandsComplete() - Trying to add an operand to a machine instr that is already done!); -operands.push_back( - MachineOperand(reg, MachineOperand::MO_VirtualRegister, - isDef ? MachineOperand::Def : MachineOperand::Use)); - } - - /// addRegOperand - Add a symbolic virtual register reference... - /// void addRegOperand(int reg, MachineOperand::UseType UTy = MachineOperand::Use) { assert(!OperandsComplete() Trying to add an operand to a machine instr that is already done!); operands.push_back( - MachineOperand(reg, MachineOperand::MO_VirtualRegister, UTy)); + MachineOperand(reg, MachineOperand::MO_Register, UTy)); } - /// addZeroExtImmOperand - Add a zero extended constant argument to the + /// addImmOperand - Add a zero extended constant argument to the /// machine instruction. /// - void addZeroExtImmOperand(int intValue) { -assert(!OperandsComplete() - Trying to add an operand to a machine instr that is already done!); -operands.push_back( - MachineOperand(intValue, MachineOperand::MO_Immediate)); - } - - /// addZeroExtImm64Operand - Add a zero extended 64-bit constant argument - /// to the machine instruction. - /// - void addZeroExtImm64Operand(uint64_t intValue) { + void addImmOperand(int64_t Val) { assert(!OperandsComplete() Trying to add an operand to a machine instr that is already done!); -operands.push_back(MachineOperand(intValue, MachineOperand::MO_Immediate)); +operands.push_back(MachineOperand(Val)); } void addMachineBasicBlockOperand(MachineBasicBlock *MBB) { Index: llvm/include/llvm/CodeGen/MachineInstrBuilder.h diff -u llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.34 llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.35 --- llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.34Thu May 4 12:21:19 2006 +++ llvm/include/llvm/CodeGen/MachineInstrBuilder.h Thu May 4 13:05:43 2006 @@ -42,22 +42,22 @@ /// addImm - Add a new immediate operand. /// - const MachineInstrBuilder addImm(int Val) const { -MI-addZeroExtImmOperand(Val); + const MachineInstrBuilder addImm(int64_t Val) const { +MI-addImmOperand(Val); return *this; } /// addZImm - Add a new zero extended immediate operand... /// const MachineInstrBuilder addZImm(unsigned Val) const { -
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h MachineInstrBuilder.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.177 - 1.178 MachineInstrBuilder.h updated: 1.35 - 1.36 --- Log message: Remove and simplify some more machineinstr/machineoperand stuff. --- Diffs of the changes: (+10 -44) MachineInstr.h| 30 +- MachineInstrBuilder.h | 24 +--- 2 files changed, 10 insertions(+), 44 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.177 llvm/include/llvm/CodeGen/MachineInstr.h:1.178 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.177 Thu May 4 13:05:42 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hThu May 4 13:16:01 2006 @@ -261,23 +261,8 @@ //===--===// -// class MachineInstr -// -// Purpose: -// Representation of each machine instruction. -// -// MachineOpCode must be an enum, defined separately for each target. -// E.g., It is defined in SparcInstructionSelection.h for the SPARC. -// -// There are 2 kinds of operands: -// -// (1) Explicit operands of the machine instruction in vector operands[] -// -// (2) Implicit operands are values implicitly used or defined by the -// machine instruction, such as arguments to a CALL, return value of -// a CALL (if any), and return value of a RETURN. -//===--===// - +/// MachineInstr - Representation of each machine instruction. +/// class MachineInstr { short Opcode; // the opcode std::vectorMachineOperand operands; // the operands @@ -287,9 +272,7 @@ // OperandComplete - Return true if it's illegal to add a new operand bool OperandsComplete() const; - //Constructor used by clone() method MachineInstr(const MachineInstr); - void operator=(const MachineInstr); // DO NOT IMPLEMENT // Intrusive list support @@ -297,12 +280,9 @@ friend struct ilist_traitsMachineInstr; public: - /// MachineInstr ctor - This constructor only does a _reserve_ of the - /// operands, not a resize for them. It is expected that if you use this that - /// you call add* methods below to fill up the operands, instead of the Set - /// methods. Eventually, the resizing ctors will be phased out. - /// - MachineInstr(short Opcode, unsigned numOperands, bool XX, bool YY); + /// MachineInstr ctor - This constructor reserve's space for numOperand + /// operands. + MachineInstr(short Opcode, unsigned numOperands); /// MachineInstr ctor - Work exactly the same as the ctor above, except that /// the MachineInstr is created and added to the end of the specified basic Index: llvm/include/llvm/CodeGen/MachineInstrBuilder.h diff -u llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.35 llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.36 --- llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.35Thu May 4 13:05:43 2006 +++ llvm/include/llvm/CodeGen/MachineInstrBuilder.h Thu May 4 13:16:01 2006 @@ -47,20 +47,6 @@ return *this; } - /// addZImm - Add a new zero extended immediate operand... - /// - const MachineInstrBuilder addZImm(unsigned Val) const { -MI-addImmOperand(Val); -return *this; - } - - /// addImm64 - Add a new 64-bit immediate operand... - /// - const MachineInstrBuilder addImm64(uint64_t Val) const { -MI-addImmOperand(Val); -return *this; - } - const MachineInstrBuilder addMBB(MachineBasicBlock *MBB) const { MI-addMachineBasicBlockOperand(MBB); return *this; @@ -99,7 +85,7 @@ /// allow for memory efficient representation of machine instructions. /// inline MachineInstrBuilder BuildMI(int Opcode, unsigned NumOperands) { - return MachineInstrBuilder(new MachineInstr(Opcode, NumOperands, true, true)); + return MachineInstrBuilder(new MachineInstr(Opcode, NumOperands)); } /// BuildMI - This version of the builder sets up the first operand as a @@ -110,8 +96,8 @@ int Opcode, unsigned NumOperands, unsigned DestReg, MachineOperand::UseType useType = MachineOperand::Def) { - return MachineInstrBuilder(new MachineInstr(Opcode, NumOperands+1, - true, true)).addReg(DestReg, useType); + return MachineInstrBuilder(new MachineInstr(Opcode, NumOperands+1)) + .addReg(DestReg, useType); } /// BuildMI - This version of the builder inserts the newly-built @@ -124,7 +110,7 @@ MachineBasicBlock::iterator I, int Opcode, unsigned NumOperands, unsigned DestReg) { - MachineInstr *MI = new MachineInstr(Opcode, NumOperands+1, true, true); + MachineInstr *MI = new MachineInstr(Opcode, NumOperands+1); BB.insert(I, MI); return MachineInstrBuilder(MI).addReg(DestReg, MachineOperand::Def); } @@ -136,7 +122,7 @@ inline MachineInstrBuilder
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.178 - 1.179 --- Log message: Move register numbers out of extra into contents. Other minor cleanup. --- Diffs of the changes: (+21 -34) MachineInstr.h | 55 +-- 1 files changed, 21 insertions(+), 34 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.178 llvm/include/llvm/CodeGen/MachineInstr.h:1.179 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.178 Thu May 4 13:16:01 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hThu May 4 13:25:20 2006 @@ -32,8 +32,6 @@ template typename T struct ilist_traits; template typename T struct ilist; -typedef short MachineOpCode; - //===--===// // class MachineOperand // @@ -77,64 +75,53 @@ int64_t immedVal; // Constant value for an explicit constant MachineBasicBlock *MBB; // For MO_MachineBasicBlock type const char *SymbolName; // For MO_ExternalSymbol type +unsigned RegNo;// For MO_Register number for an explicit register } contents; char flags; // see bit field definitions above MachineOperandType opType:8; // Pack into 8 bits efficiently after flags. - union { -int regNum; // register number for an explicit register -int offset; // Offset to address of global or external, only -// valid for MO_GlobalAddress, MO_ExternalSym -// and MO_ConstantPoolIndex - } extra; - - void zeroContents() { -contents.immedVal = 0; -extra.offset = 0; - } + + /// offset - Offset to address of global or external, only valid for + /// MO_GlobalAddress, MO_ExternalSym and MO_ConstantPoolIndex + int offset; MachineOperand(int64_t ImmVal) : flags(0), opType(MO_Immediate) { contents.immedVal = ImmVal; -extra.offset = 0; +offset = 0; } - MachineOperand(unsigned Idx, MachineOperandType OpTy) -: flags(0), opType(OpTy) { + MachineOperand(unsigned Idx, MachineOperandType OpTy): flags(0), opType(OpTy){ contents.immedVal = Idx; -extra.offset = 0; +offset = 0; } MachineOperand(int Reg, MachineOperandType OpTy, UseType UseTy) : flags(UseTy), opType(OpTy) { -zeroContents(); -extra.regNum = Reg; +contents.RegNo = Reg; +offset = 0; } MachineOperand(GlobalValue *V, int Offset = 0) : flags(MachineOperand::Use), opType(MachineOperand::MO_GlobalAddress) { contents.GV = V; -extra.offset = Offset; +offset = Offset; } MachineOperand(MachineBasicBlock *mbb) : flags(0), opType(MO_MachineBasicBlock) { -zeroContents (); contents.MBB = mbb; +offset = 0; } MachineOperand(const char *SymName, int Offset) : flags(0), opType(MO_ExternalSymbol) { -zeroContents (); contents.SymbolName = SymName; -extra.offset = Offset; +offset = Offset; } public: - MachineOperand(const MachineOperand M) -: flags(M.flags), opType(M.opType) { -zeroContents (); -contents = M.contents; -extra = M.extra; + MachineOperand(const MachineOperand M) { +*this = M; } ~MachineOperand() {} @@ -143,7 +130,7 @@ contents = MO.contents; flags= MO.flags; opType = MO.opType; -extra= MO.extra; +offset = MO.offset; return *this; } @@ -197,7 +184,7 @@ int getOffset() const { assert((isGlobalAddress() || isExternalSymbol() || isConstantPoolIndex()) Wrong MachineOperand accessor); -return extra.offset; +return offset; } const char *getSymbolName() const { assert(isExternalSymbol() Wrong MachineOperand accessor); @@ -216,14 +203,14 @@ /// unsigned getReg() const { assert(isRegister() This is not a register operand!); -return extra.regNum; +return contents.RegNo; } /// MachineOperand mutators. /// void setReg(unsigned Reg) { assert(isRegister() This is not a register operand!); -extra.regNum = Reg; +contents.RegNo = Reg; } void setImmedValue(int64_t immVal) { @@ -235,7 +222,7 @@ assert((isGlobalAddress() || isExternalSymbol() || isConstantPoolIndex() || isJumpTableIndex()) Wrong MachineOperand accessor); -extra.offset = Offset; +offset = Offset; } /// ChangeToImmediate - Replace this operand with a new immediate operand of @@ -251,7 +238,7 @@ /// the setReg method should be used. void ChangeToRegister(unsigned Reg) { opType = MO_Register; -extra.regNum = Reg; +contents.RegNo = Reg; } friend std::ostream operator(std::ostream os, const MachineOperand mop); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.179 - 1.180 --- Log message: Remove redundancy and a level of indirection when creating machine operands --- Diffs of the changes: (+59 -68) MachineInstr.h | 127 ++--- 1 files changed, 59 insertions(+), 68 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.179 llvm/include/llvm/CodeGen/MachineInstr.h:1.180 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.179 Thu May 4 13:25:20 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hThu May 4 14:14:44 2006 @@ -85,40 +85,7 @@ /// MO_GlobalAddress, MO_ExternalSym and MO_ConstantPoolIndex int offset; - MachineOperand(int64_t ImmVal) : flags(0), opType(MO_Immediate) { -contents.immedVal = ImmVal; -offset = 0; - } - - MachineOperand(unsigned Idx, MachineOperandType OpTy): flags(0), opType(OpTy){ -contents.immedVal = Idx; -offset = 0; - } - - MachineOperand(int Reg, MachineOperandType OpTy, UseType UseTy) -: flags(UseTy), opType(OpTy) { -contents.RegNo = Reg; -offset = 0; - } - - MachineOperand(GlobalValue *V, int Offset = 0) -: flags(MachineOperand::Use), opType(MachineOperand::MO_GlobalAddress) { -contents.GV = V; -offset = Offset; - } - - MachineOperand(MachineBasicBlock *mbb) -: flags(0), opType(MO_MachineBasicBlock) { -contents.MBB = mbb; -offset = 0; - } - - MachineOperand(const char *SymName, int Offset) -: flags(0), opType(MO_ExternalSymbol) { -contents.SymbolName = SymName; -offset = Offset; - } - + MachineOperand() {} public: MachineOperand(const MachineOperand M) { *this = M; @@ -252,7 +219,7 @@ /// class MachineInstr { short Opcode; // the opcode - std::vectorMachineOperand operands; // the operands + std::vectorMachineOperand Operands; // the operands MachineInstr* prev, *next;// links for our intrusive list MachineBasicBlock* parent;// pointer to the owning basic block @@ -288,21 +255,21 @@ /// Access to explicit operands of the instruction. /// - unsigned getNumOperands() const { return operands.size(); } + unsigned getNumOperands() const { return Operands.size(); } const MachineOperand getOperand(unsigned i) const { assert(i getNumOperands() getOperand() out of range!); -return operands[i]; +return Operands[i]; } MachineOperand getOperand(unsigned i) { assert(i getNumOperands() getOperand() out of range!); -return operands[i]; +return Operands[i]; } /// clone - Create a copy of 'this' instruction that is identical in /// all ways except the the instruction has no parent, prev, or next. - MachineInstr* clone() const; + MachineInstr* clone() const { return new MachineInstr(*this); } /// removeFromParent - This method unlinks 'this' from the containing basic /// block, and returns it, but does not delete it. @@ -322,70 +289,87 @@ friend std::ostream operator(std::ostream os, const MachineInstr minstr); //======// - // Accessors to add operands when building up machine instructions + // Accessors to add operands when building up machine instructions. // - /// addRegOperand - Add a symbolic virtual register reference... + /// addRegOperand - Add a register operand. /// - void addRegOperand(int reg, + void addRegOperand(unsigned Reg, MachineOperand::UseType UTy = MachineOperand::Use) { -assert(!OperandsComplete() - Trying to add an operand to a machine instr that is already done!); -operands.push_back( - MachineOperand(reg, MachineOperand::MO_Register, UTy)); +MachineOperand Op = AddNewOperand(); +Op.opType = MachineOperand::MO_Register; +Op.flags = UTy; +Op.contents.RegNo = Reg; +Op.offset = 0; } /// addImmOperand - Add a zero extended constant argument to the /// machine instruction. /// void addImmOperand(int64_t Val) { -assert(!OperandsComplete() - Trying to add an operand to a machine instr that is already done!); -operands.push_back(MachineOperand(Val)); +MachineOperand Op = AddNewOperand(); +Op.opType = MachineOperand::MO_Immediate; +Op.flags = 0; +Op.contents.immedVal = Val; +Op.offset = 0; } void addMachineBasicBlockOperand(MachineBasicBlock *MBB) { -assert(!OperandsComplete() - Trying to add an operand to a machine instr that is already done!); -operands.push_back(MachineOperand(MBB)); +MachineOperand Op = AddNewOperand(); +Op.opType = MachineOperand::MO_MachineBasicBlock; +Op.flags = 0; +Op.contents.MBB = MBB; +Op.offset = 0; } /// addFrameIndexOperand - Add an abstract frame index to the instruction /// void addFrameIndexOperand(unsigned
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.180 - 1.181 --- Log message: Final pass of minor cleanups for MachineInstr --- Diffs of the changes: (+5 -5) MachineInstr.h | 10 +- 1 files changed, 5 insertions(+), 5 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.180 llvm/include/llvm/CodeGen/MachineInstr.h:1.181 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.180 Thu May 4 14:14:44 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hThu May 4 14:36:09 2006 @@ -71,11 +71,11 @@ private: union { -GlobalValue *GV;// LLVM global for MO_GlobalAddress. -int64_t immedVal; // Constant value for an explicit constant -MachineBasicBlock *MBB; // For MO_MachineBasicBlock type -const char *SymbolName; // For MO_ExternalSymbol type -unsigned RegNo;// For MO_Register number for an explicit register +GlobalValue *GV; // For MO_GlobalAddress. +MachineBasicBlock *MBB; // For MO_MachineBasicBlock. +const char *SymbolName; // For MO_ExternalSymbol. +unsigned RegNo; // For MO_Register. +int64_t immedVal; // For MO_Immediate and MO_*Index. } contents; char flags; // see bit field definitions above ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h MachineInstrBuilder.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.168 - 1.169 MachineInstrBuilder.h updated: 1.30 - 1.31 --- Log message: Remove some more unused stuff from MachineInstr that was leftover from V9. --- Diffs of the changes: (+3 -71) MachineInstr.h| 49 +++-- MachineInstrBuilder.h | 25 - 2 files changed, 3 insertions(+), 71 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.168 llvm/include/llvm/CodeGen/MachineInstr.h:1.169 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.168 Sat Apr 22 13:53:45 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hWed May 3 19:44:25 2006 @@ -98,10 +98,8 @@ enum MachineOperandType { MO_VirtualRegister, // virtual register for *value MO_MachineRegister, // pre-assigned machine register `regNum' -MO_CCRegister, MO_SignExtendedImmed, MO_UnextendedImmed, -MO_PCRelativeDisp, MO_MachineBasicBlock, // MachineBasicBlock reference MO_FrameIndex, // Abstract Stack Frame Index MO_ConstantPoolIndex, // Address of indexed Constant in Constant Pool @@ -237,7 +235,6 @@ /// Accessors that tell you what kind of MachineOperand you're looking at. /// bool isMachineBasicBlock() const { return opType == MO_MachineBasicBlock; } - bool isPCRelativeDisp() const { return opType == MO_PCRelativeDisp; } bool isImmediate() const { return opType == MO_SignExtendedImmed || opType == MO_UnextendedImmed; } @@ -251,16 +248,14 @@ /// has one. This is deprecated and only used by the SPARC v9 backend. /// Value* getVRegValueOrNull() const { -return (opType == MO_VirtualRegister || opType == MO_CCRegister || -isPCRelativeDisp()) ? contents.value : NULL; +return opType == MO_VirtualRegister ? contents.value : NULL; } /// MachineOperand accessors that only work on certain types of /// MachineOperand... /// Value* getVRegValue() const { -assert ((opType == MO_VirtualRegister || opType == MO_CCRegister - || isPCRelativeDisp()) Wrong MachineOperand accessor); +assert(opType == MO_VirtualRegister Wrong MachineOperand accessor); return contents.value; } int getMachineRegNum() const { @@ -322,8 +317,7 @@ /// bool hasAllocatedReg() const { return (extra.regNum = 0 -(opType == MO_VirtualRegister || opType == MO_CCRegister || - opType == MO_MachineRegister)); +(opType == MO_VirtualRegister || opType == MO_MachineRegister)); } /// getReg - Returns the register number. It is a runtime error to call this @@ -362,25 +356,6 @@ friend std::ostream operator(std::ostream os, const MachineOperand mop); - /// markHi32, markLo32, etc. - These methods are deprecated and only used by - /// the SPARC v9 back-end. - /// - void markHi32() { flags |= HIFLAG32; } - void markLo32() { flags |= LOFLAG32; } - void markHi64() { flags |= HIFLAG64; } - void markLo64() { flags |= LOFLAG64; } - -private: - /// setRegForValue - Replaces the Value with its corresponding physical - /// register after register allocation is complete. This is deprecated - /// and only used by the SPARC v9 back-end. - /// - void setRegForValue(int reg) { -assert(opType == MO_VirtualRegister || opType == MO_CCRegister || - opType == MO_MachineRegister); -extra.regNum = reg; - } - friend class MachineInstr; }; @@ -507,15 +482,6 @@ UTy, isPCRelative)); } - void addCCRegOperand(Value *V, - MachineOperand::UseType UTy = MachineOperand::Use) { -assert(!OperandsComplete() - Trying to add an operand to a machine instr that is already done!); -operands.push_back(MachineOperand(V, MachineOperand::MO_CCRegister, UTy, - false)); - } - - /// addRegOperand - Add a symbolic virtual register reference... /// void addRegOperand(int reg, bool isDef) { @@ -536,15 +502,6 @@ MachineOperand(reg, MachineOperand::MO_VirtualRegister, UTy)); } - /// addPCDispOperand - Add a PC relative displacement operand to the MI - /// - void addPCDispOperand(Value *V) { -assert(!OperandsComplete() - Trying to add an operand to a machine instr that is already done!); -operands.push_back( - MachineOperand(V, MachineOperand::MO_PCRelativeDisp,MachineOperand::Use)); - } - /// addMachineRegOperand - Add a virtual register operand to this MachineInstr /// void addMachineRegOperand(int reg, bool isDef) { Index: llvm/include/llvm/CodeGen/MachineInstrBuilder.h diff -u llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.30 llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.31 --- llvm/include/llvm/CodeGen/MachineInstrBuilder.h:1.30Mon Apr 24
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.169 - 1.170 --- Log message: Remove some more V9-specific stuff. --- Diffs of the changes: (+0 -15) MachineInstr.h | 15 --- 1 files changed, 15 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.169 llvm/include/llvm/CodeGen/MachineInstr.h:1.170 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.169 Wed May 3 19:44:25 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hWed May 3 19:49:59 2006 @@ -75,10 +75,6 @@ enum { DEFFLAG = 0x01, // this is a def of the operand USEFLAG = 0x02, // this is a use of the operand -HIFLAG32= 0x04, // operand is %hi32(value_or_immedVal) -LOFLAG32= 0x08, // operand is %lo32(value_or_immedVal) -HIFLAG64= 0x10, // operand is %hi64(value_or_immedVal) -LOFLAG64= 0x20, // operand is %lo64(value_or_immedVal) PCRELATIVE = 0x40// Operand is relative to PC, not a global address }; @@ -215,13 +211,6 @@ /// UseType getUseType() const { return UseType(flags (USEFLAG|DEFFLAG)); } - /// isPCRelative - This returns the value of the PCRELATIVE flag, which - /// indicates whether this operand should be emitted as a PC relative value - /// instead of a global address. This is used for operands of the forms: - /// MachineBasicBlock, GlobalAddress, ExternalSymbol - /// - bool isPCRelative() const { return (flags PCRELATIVE) != 0; } - /// isRegister - Return true if this operand is a register operand. The X86 /// backend currently can't decide whether to use MO_MR or MO_VR to represent /// them, so we accept both. @@ -307,10 +296,6 @@ MachineOperand setUse () { flags |= USEFLAG; return *this; } boolisDef () const { return flags DEFFLAG; } MachineOperand setDef () { flags |= DEFFLAG; return *this; } - boolisHiBits32 () const { return flags HIFLAG32; } - boolisLoBits32 () const { return flags LOFLAG32; } - boolisHiBits64 () const { return flags HIFLAG64; } - boolisLoBits64 () const { return flags LOFLAG64; } /// hasAllocatedReg - Returns true iff a machine register has been /// allocated to this operand. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.165 - 1.166 --- Log message: Add some convenience methods. --- Diffs of the changes: (+10 -0) MachineInstr.h | 10 ++ 1 files changed, 10 insertions(+) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.165 llvm/include/llvm/CodeGen/MachineInstr.h:1.166 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.165 Sat Feb 25 03:52:55 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hMon Apr 17 16:35:08 2006 @@ -499,6 +499,16 @@ /// clone - Create a copy of 'this' instruction that is identical in /// all ways except the the instruction has no parent, prev, or next. MachineInstr* clone() const; + + /// removeFromParent - This method unlinks 'this' from the containing basic + /// block, and returns it, but does not delete it. + MachineInstr *removeFromParent(); + + /// eraseFromParent - This method unlinks 'this' from the containing basic + /// block and deletes it. + void eraseFromParent() { +delete removeFromParent(); + } // // Debugging support ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits