<div dir="ltr">Thank you for the answer. So, as I understood, to get the type of the "or" instruction (which I cannot access further as Value , because it is actually a dead instruction), I should get the type of one of its' operands, yes? because the example with ret is quite understandable, but it seems really strange that such instructions as add, and , which define the actual values can have their Types be accessed only from the operands.<br></div><div class="gmail_extra"><br><div class="gmail_quote">2017-07-21 16:35 GMT+02:00 Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 21 July 2017 at 04:49, Anastasiya Ruzhanskaya via llvm-dev<br>
<span class=""><<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br>
> I would like to keep info about size and type info of all instructions ( and<br>
> Values at the same time). I can do this by extracting type of the Values,<br>
> but if I have still some unused instructions , I can't keep track on them. I<br>
> try to convert them to Value and get the type or simply get the type of<br>
> instruction, but have the following error:<br>
><br>
> Assertion `Ty->isSized() && "Cannot getTypeInfo() on a type that is<br>
> unsized!"' failed.<br>
<br>
</span>You've got two issues you need to take account of here.<br>
<br>
First is that the Type of an instruction is the type of the Value it<br>
produces, which isn't necessarily what you want. Some instructions<br>
("ret" in your case, but also other branches, and "store") produce no<br>
actual value that can be used later so their type is "void" which has<br>
no size. What you probably want is the type of one of the operands<br>
(RetI->getOperand(0)->getType(<wbr>) for example would be "i32" in your<br>
example).<br>
<br>
The other thing you're likely to hit is that aggregate types can have<br>
sizes that depend on the DataLayout. For example {i32, i64} might have<br>
size 96 or 128 depending on the ABI. So you should be using<br>
DataLayout::getTypeSizeInBits if you need to cover these cases instead<br>
of Type's own accessor.<br>
<br>
Cheers.<br>
<span class="HOEnZb"><font color="#888888"><br>
Tim.<br>
</font></span></blockquote></div><br></div>