60#ifndef LLVM_SUPPORT_EXTENSIBLERTTI_H
61#define LLVM_SUPPORT_EXTENSIBLERTTI_H
80 virtual bool isA(
const void *
const ClassID)
const {
85 template <
typename QueryT>
86 bool isA()
const {
return isA(QueryT::classID()); }
89 virtual void anchor();
113template <
typename ThisT,
typename ParentT>
117 using ParentT::ParentT;
119 static const void *
classID() {
return &ThisT::ID; }
123 bool isA(
const void *
const ClassID)
const override {
124 return ClassID ==
classID() || ParentT::isA(ClassID);
Inheritance utility for extensible RTTI.
static const void * classID()
static bool classof(const RTTIRoot *R)
bool isA(const void *const ClassID) const override
const void * dynamicClassID() const override
Base class for the extensible RTTI hierarchy.
static const void * classID()
Returns the class ID for this type.
virtual bool isA(const void *const ClassID) const
Returns true if this class's ID matches the given class ID.
bool isA() const
Check whether this instance is a subclass of QueryT.
virtual ~RTTIRoot()=default
virtual const void * dynamicClassID() const =0
Returns the class ID for the dynamic type of this RTTIRoot instance.
This is an optimization pass for GlobalISel generic memory operations.