MLIR  19.0.0git
Static Public Member Functions | List of all members
llvm::CastInfo< To, From, std::enable_if_t< std::is_same_v< mlir::Type, std::remove_const_t< From > >||std::is_base_of_v< mlir::Type, From > > > Struct Template Reference

Add support for llvm style casts. More...

#include "mlir/IR/Types.h"

+ Inheritance diagram for llvm::CastInfo< To, From, std::enable_if_t< std::is_same_v< mlir::Type, std::remove_const_t< From > >||std::is_base_of_v< mlir::Type, From > > >:

Static Public Member Functions

static bool isPossible (mlir::Type ty)
 Arguments are taken as mlir::Type here and not as From, because when casting from an intermediate type of the hierarchy to one of its children, the val.getTypeID() inside T::classof will use the static getTypeID of the parent instead of the non-static Type::getTypeID that returns the dynamic ID. More...
 
static To doCast (mlir::Type ty)
 

Detailed Description

template<typename To, typename From>
struct llvm::CastInfo< To, From, std::enable_if_t< std::is_same_v< mlir::Type, std::remove_const_t< From > >||std::is_base_of_v< mlir::Type, From > > >

Add support for llvm style casts.

We provide a cast between To and From if From is mlir::Type or derives from it

Definition at line 393 of file Types.h.

Member Function Documentation

◆ doCast()

template<typename To , typename From >
static To llvm::CastInfo< To, From, std::enable_if_t< std::is_same_v< mlir::Type, std::remove_const_t< From > >||std::is_base_of_v< mlir::Type, From > > >::doCast ( mlir::Type  ty)
inlinestatic

Definition at line 415 of file Types.h.

References mlir::Type::getImpl().

◆ isPossible()

template<typename To , typename From >
static bool llvm::CastInfo< To, From, std::enable_if_t< std::is_same_v< mlir::Type, std::remove_const_t< From > >||std::is_base_of_v< mlir::Type, From > > >::isPossible ( mlir::Type  ty)
inlinestatic

Arguments are taken as mlir::Type here and not as From, because when casting from an intermediate type of the hierarchy to one of its children, the val.getTypeID() inside T::classof will use the static getTypeID of the parent instead of the non-static Type::getTypeID that returns the dynamic ID.

This means that T::classof would end up comparing the static TypeID of the children to the static TypeID of its parent, making it impossible to downcast from the parent to the child.

Return a constant true instead of a dynamic true when casting to self or up the hierarchy.

Definition at line 406 of file Types.h.


The documentation for this struct was generated from the following file: