Dipanjan Das via llvm-dev
2017-Jun-12 05:54 UTC
[llvm-dev] How to know the sub-class of a Value class?
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 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170611/8ad30777/attachment-0001.html>
Craig Topper via llvm-dev
2017-Jun-12 06:03 UTC
[llvm-dev] How to know the sub-class of a Value class?
Try value->dump() assuming you're using a debug build. ~Craig On Sun, Jun 11, 2017 at 10:54 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 > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170611/c944d8bd/attachment.html>
Jeremy Lakeman via llvm-dev
2017-Jun-12 06:06 UTC
[llvm-dev] How to know the sub-class of a Value class?
http://llvm.org/docs/ProgrammersManual.html#the-isa-cast-and-dyn-cast-templates 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 > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170612/8b4b7238/attachment.html>
Dipanjan Das via llvm-dev
2017-Jun-12 06:09 UTC
[llvm-dev] How to know the sub-class of a Value class?
On 11 June 2017 at 23:03, Craig Topper <craig.topper at gmail.com> wrote:> Try value->dump() assuming you're using a debug build. > >The information displayed is non-uniform. There are two different cases based on my sample program: (1) dump() shows the Type and *some* value which I don't understand what it is (2) dump() shows the instruction that creates the Value* But, it doesn't display the concrete sub-class.> ~Craig > > On Sun, Jun 11, 2017 at 10:54 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/7adf551d/attachment.html>
Dipanjan Das via llvm-dev
2017-Jun-12 06:12 UTC
[llvm-dev] How to know the sub-class of a Value class?
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>