[llvm-dev] Subclassing LLVM Type

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


Hi,


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
{
private:
std::string typeIdentifier;
public:
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.

Thanks,
Malhar



-------------- 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