[llvm-dev] Subclassing LLVM Type

Jajoo, Malhar via llvm-dev llvm-dev at lists.llvm.org
Fri Jun 9 12:03:10 PDT 2017


I was wondering if it was possible to create a Dummy Type by subclassing LLVM Type.

I do not want to create a new type or even do much with this dummy type , all I need

is a placeholder type until I generate IR.

I want to use this approach as most of my AST is already configured to
accept a Type*  and not a DummyType* ( which is my own class )

I explored this a bit and did manage to create one.

==========  DummyType class =========

class DummyType : public llvm::Type
std::string typeIdentifier;
DummyType(const std::string& typeIdentifier,TypeID tyId):typeIdentifier(typeIdentifier),Type(TheContext,tyId)

std::string getTypeIdentifierString() const
return this->typeIdentifier ;


 Now ,

Type* ty = new DummyType()  works.

However , I wish to use "dynamic_cast<>" at runtime but I'm unable to do so.
example - DummyType* dum_type = dynamic_cast<DummyType>(ty) ; // where ty is a Type*

I get the following error -

error: 'llvm::Type' is not polymorphic

Is there some way around this ( without suggesting a change to my entire AST ) ?
 Any help will be appreciated.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170609/84c71614/attachment.html>

More information about the llvm-dev mailing list