mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-25 00:24:26 +00:00
Make MDNode use CallbackVH. Also change MDNode to store Value* instead of
Constant* in preperation of a future change to support holding non-Constants in an MDNode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71407 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -26,7 +26,6 @@
|
||||
#include "llvm/OperandTraits.h"
|
||||
#include "llvm/ADT/APInt.h"
|
||||
#include "llvm/ADT/APFloat.h"
|
||||
#include "llvm/ADT/FoldingSet.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
|
||||
namespace llvm {
|
||||
@ -877,55 +876,6 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
/// MDNode - a tuple of other values.
|
||||
/// These contain a list of the Constants that represent the metadata.
|
||||
///
|
||||
class MDNode : public Constant, public FoldingSetNode {
|
||||
MDNode(const MDNode &); // DO NOT IMPLEMENT
|
||||
protected:
|
||||
explicit MDNode(Constant*const* Vals, unsigned NumVals);
|
||||
public:
|
||||
/// get() - Static factory methods - Return objects of the specified value.
|
||||
///
|
||||
static MDNode *get(Constant*const* Vals, unsigned NumVals);
|
||||
|
||||
// Transparently provide more efficient getOperand methods.
|
||||
DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Constant);
|
||||
|
||||
/// getType() specialization - Type is always an empty struct.
|
||||
///
|
||||
inline const Type *getType() const {
|
||||
return Type::EmptyStructTy;
|
||||
}
|
||||
|
||||
/// isNullValue - Return true if this is the value that would be returned by
|
||||
/// getNullValue. This always returns false because getNullValue will never
|
||||
/// produce metadata.
|
||||
virtual bool isNullValue() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
/// Profile - calculate a unique identifier for this MDNode to collapse
|
||||
/// duplicates
|
||||
void Profile(FoldingSetNodeID &ID);
|
||||
|
||||
virtual void destroyConstant();
|
||||
virtual void replaceUsesOfWithOnConstant(Value *From, Value *To, Use *U);
|
||||
|
||||
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
||||
static inline bool classof(const MDNode *) { return true; }
|
||||
static bool classof(const Value *V) {
|
||||
return V->getValueID() == MDNodeVal;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct OperandTraits<MDNode> : VariadicOperandTraits<> {
|
||||
};
|
||||
|
||||
DEFINE_TRANSPARENT_CASTED_OPERAND_ACCESSORS(MDNode, Constant)
|
||||
|
||||
} // End llvm namespace
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user