[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