friend class SymbolTableListTraits<Instruction, BasicBlock, Function,
ilist_traits<Instruction> >;
void setParent(BasicBlock *P);
-
-private:
- // FIXME: This is a dirty hack. Setcc instructions shouldn't encode the CC
- // into the opcode field. When they don't, this will be unneeded.
- void setOpcode(unsigned NewOpcode);
- friend class BinaryOperator;
protected:
Instruction(const Type *Ty, unsigned iType, Use *Ops, unsigned NumOps,
const std::string &Name = "",
/// using this Value.
/// @brief LLVM Value Representation
class Value {
- unsigned short SubclassID; // Subclass identifier (for isa/dyn_cast)
+ const unsigned short SubclassID; // Subclass identifier (for isa/dyn_cast)
protected:
/// SubclassData - This member is defined by this class, but is not used for
/// anything. Subclasses can use it to hold whatever state they find useful.
/// getRawType - This should only be used to implement the vmcore library.
///
const Type *getRawType() const { return Ty.getRawType(); }
-
-private:
- /// FIXME: this is a gross hack, needed by another gross hack. Eliminate!
- void setValueType(unsigned short VT) { SubclassID = VT; }
- friend class Instruction;
};
inline std::ostream &operator<<(std::ostream &OS, const Value &V) {
}
-void Instruction::setOpcode(unsigned opc) {
- setValueType(Value::InstructionVal + opc);
-}
-
void Instruction::setParent(BasicBlock *P) {
if (getParent()) {
if (!P) LeakDetector::addGarbageObject(this);