<div dir="ltr"><div><div><div>Hi,<br><br></div>Thank you David.<br></div>My question was from a machine independent code analyzer/optimizer perspective where types are of less importance. Hence I felt difficult to understand the IR with the types.<br><br></div>Rekha<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 27, 2014 at 6:44 PM, David Chisnall <span dir="ltr"><<a href="mailto:David.Chisnall@cl.cam.ac.uk" target="_blank">David.Chisnall@cl.cam.ac.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 27 Oct 2014, at 12:46, Rekha R <<a href="mailto:rekharamapai@nitc.ac.in">rekharamapai@nitc.ac.in</a>> wrote:<br>
<br>
> Why wasn't the C style of explicit declaration of variables (or values in LLVM context) followed by their uses model not adopted here?<br>
<br>
</span>For the simple reason that there are no variables in LLVM IR.  The SSA form means that every value is declared and initialised exactly once.  Some values, such as constant integers, are created (in the text serialisation) inline in their use so there is no point where they are declared.<br>
<span class=""><br>
> or may be even annotate the value (result of the Instruction) with type rather than annotating each operands on the Instruction?<br>
><br>
> Just felt that by annotating each operand with types may make the Instruction 'complex' to understand. May be I am wrong.<br>
<br>
</span>You will find it much easier to read when you are debugging.  The IR is not intended to be read or written by humans, the text serialisation is there as a debugging aid when something has gone wrong.  It is *very* useful to be able to look at a single instruction and see all of the types, without having to chase through a load of other parts of the code to find where things were declared.<br>
<span class="HOEnZb"><font color="#888888"><br>
David<br>
<br>
</font></span></blockquote></div><br><br clear="all"><br>-- <br>Rekha
</div>