[llvm-dev] How to know the sub-class of a Value class?

Dipanjan Das via llvm-dev llvm-dev at lists.llvm.org
Sun Jun 11 23:12:03 PDT 2017


On 11 June 2017 at 23:06, Jeremy Lakeman <Jeremy.Lakeman at gmail.com> wrote:

> http://llvm.org/docs/ProgrammersManual.html#the-isa-cast-and-dyn-cast-
> templates
>

I understand isa and dyn-cast let you test the type of an object at
run-time by leveraging LLVM's custom implementation of RTTI. However, it
doesn't make much sense to test out for all possible sub-classes to get to
know what it actually is. If I just want to know sub-class a Value* is,
what's the way out (other than testing with isa<>())?



>
>
> On Mon, Jun 12, 2017 at 3:24 PM, Dipanjan Das via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>>
>> As a concrete question, I understand 'Value' class is the parent of many
>> concrete sub-classes. Let's say I retrieve a Value* value =
>> store_inst->getValueOperand(). Unless I know what the sub-type is, how can
>> I further use this object? I tried something like this:
>>
>> =================================================
>>
>>          Value* value = store_inst->getValueOperand()
>>          errs() << value->getValueID; // Which ID corresponds to which
>> sub-class?
>>          errs() << value->getValueName(); // Prints numeric memory
>> addresses
>>          errs() << *value->getValueName(); // Doesn't compile
>>
>> =================================================
>>
>> I have mentioned the issues in each of the cases above. I am not sure if
>> the approach is correct or not. Please help me out.
>>
>> --
>>
>> Thanks & Regards,
>> Dipanjan
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>>
>


-- 

Thanks & Regards,
Dipanjan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170611/c8aa51b1/attachment.html>


More information about the llvm-dev mailing list