Instruction *cloneImpl() const;
};
-// Instruction* is only 4-byte aligned.
-template<>
-class PointerLikeTypeTraits<Instruction*> {
- typedef Instruction* PT;
-
-public:
- static inline void *getAsVoidPointer(PT P) { return P; }
-
- static inline PT getFromVoidPointer(void *P) {
- return static_cast<PT>(P);
- }
-
- enum { NumLowBitsAvailable = 2 };
-};
-
} // end namespace llvm
#endif // LLVM_IR_INSTRUCTION_H
class Use;
template <typename> struct simplify_type;
-// Use** is only 4-byte aligned.
-template <> class PointerLikeTypeTraits<Use **> {
-public:
- static inline void *getAsVoidPointer(Use **P) { return P; }
-
- static inline Use **getFromVoidPointer(void *P) {
- return static_cast<Use **>(P);
- }
-
- enum { NumLowBitsAvailable = 2 };
-};
-
/// \brief A Use represents the edge between a Value definition and its users.
///
/// This is notionally a two-dimensional linked list. It supports traversing
}
};
-// Value* is only 4-byte aligned.
-template<>
-class PointerLikeTypeTraits<Value*> {
- typedef Value* PT;
-
-public:
- static inline void *getAsVoidPointer(PT P) { return P; }
-
- static inline PT getFromVoidPointer(void *P) {
- return static_cast<PT>(P);
- }
-
- enum { NumLowBitsAvailable = 2 };
-};
-
// Create wrappers for C Binding types (see CBindingWrapping.h).
DEFINE_ISA_CONVERSION_FUNCTIONS(Value, LLVMValueRef)
class ValueHandleBase;
template<typename From> struct simplify_type;
-// ValueHandleBase** is only 4-byte aligned.
-template<>
-class PointerLikeTypeTraits<ValueHandleBase**> {
-public:
- static inline void *getAsVoidPointer(ValueHandleBase** P) { return P; }
- static inline ValueHandleBase **getFromVoidPointer(void *P) {
- return static_cast<ValueHandleBase**>(P);
- }
- enum { NumLowBitsAvailable = 2 };
-};
-
/// \brief This is the common base class of value handles.
///
/// ValueHandle's are smart pointers to Value's that have special behavior when