@@ -220,6 +220,7 @@ class Value {
220220 enum class ClassID : unsigned {
221221#define DEF_VALUE (ID, CLASS ) ID,
222222#define DEF_USER (ID, CLASS ) ID,
223+ #define DEF_CONST (ID, CLASS ) ID,
223224#define DEF_INSTR (ID, OPC, CLASS ) ID,
224225#include " llvm/SandboxIR/SandboxIRValues.def"
225226 };
@@ -233,6 +234,9 @@ class Value {
233234#define DEF_USER (ID, CLASS ) \
234235 case ClassID::ID: \
235236 return #ID;
237+ #define DEF_CONST (ID, CLASS ) \
238+ case ClassID::ID: \
239+ return #ID;
236240#define DEF_INSTR (ID, OPC, CLASS ) \
237241 case ClassID::ID: \
238242 return #ID;
@@ -515,6 +519,7 @@ class User : public Value {
515519};
516520
517521class Constant : public sandboxir ::User {
522+ protected:
518523 Constant (llvm::Constant *C, sandboxir::Context &SBCtx)
519524 : sandboxir::User(ClassID::Constant, C, SBCtx) {}
520525 Constant (ClassID ID, llvm::Constant *C, sandboxir::Context &SBCtx)
@@ -529,9 +534,13 @@ class Constant : public sandboxir::User {
529534public:
530535 // / For isa/dyn_cast.
531536 static bool classof (const sandboxir::Value *From) {
532- return From->getSubclassID () == ClassID::Constant ||
533- From->getSubclassID () == ClassID::ConstantInt ||
534- From->getSubclassID () == ClassID::Function;
537+ switch (From->getSubclassID ()) {
538+ #define DEF_CONST (ID, CLASS ) case ClassID::ID:
539+ #include " llvm/SandboxIR/SandboxIRValues.def"
540+ return true ;
541+ default :
542+ return false ;
543+ }
535544 }
536545 sandboxir::Context &getParent () const { return getContext (); }
537546 unsigned getUseOperandNo (const Use &Use) const override {
0 commit comments