<html><body><div style="color:#000; background-color:#fff; font-family:Courier New, courier, monaco, monospace, sans-serif;font-size:10pt"><div style="RIGHT: auto" class=MsoNormal>Hi All,</div>
<div style="RIGHT: auto" class=MsoNormal><VAR id=yui-ie-cursor></VAR> </div>
<div style="RIGHT: auto" class=MsoNormal>While collecting type information for "anonymous types", I had below observation.</div>
<div style="RIGHT: auto" class=MsoNormal> </div>
<div style="RIGHT: auto" class=MsoNormal>For the example with anonymous types, given below</div>
<div style="RIGHT: auto" class=MsoNormal>struct test <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p style="RIGHT: auto"></o:p></div>
<div style="RIGHT: auto" class=MsoNormal>{<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal><SPAN style="RIGHT: auto; mso-spacerun: yes">  s</SPAN>truct {<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal><SPAN style="RIGHT: auto; mso-spacerun: yes">    u</SPAN>nion {<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal><SPAN style="RIGHT: auto; mso-spacerun: yes">      </SPAN>Char a[4];<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal><SPAN style="RIGHT: auto; mso-spacerun: yes">   </SPAN><SPAN style="mso-spacerun: yes"> </SPAN>};<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal><SPAN style="RIGHT: auto; mso-spacerun: yes"> </SPAN><SPAN style="mso-spacerun: yes"> </SPAN>};<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal><SPAN style="RIGHT: auto; mso-spacerun: yes">  s</SPAN>truct {<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal><SPAN style="RIGHT: auto; mso-spacerun: yes">    i</SPAN>nt b;<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal><SPAN style="RIGHT: auto; mso-spacerun: yes">    c</SPAN>har c;<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal><SPAN style="RIGHT: auto; mso-spacerun: yes">  </SPAN>};<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal>};<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto"> </o:p></div>
<div style="RIGHT: auto" class=MsoNormal>LLVM 2.6 defines the types as <o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal>%struct.anon1 = type { %union.anon0}<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal>%struct.anon2 = type { i32, i8}</div>
<div style="RIGHT: auto" class=MsoNormal>%struct.test = type { %struct.anon1, %struct.anon2}</div>
<div style="RIGHT: auto" class=MsoNormal>%union.anon0 = type {[4 x i8]}</div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto"> </o:p></div>
<div style="RIGHT: auto" class=MsoNormal>Whereas, LLVM 2.9 defines the types as<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal>%0 = type { i32, i8}<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal>%anonanonct. = type {%anonanonn.}<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal>%anonanonn.<SPAN style="mso-spacerun: yes">  </SPAN>= type { [ 4x i8] }<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal>%struct.test = type { %anonanonct., %0}<o:p></o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto"></o:p> </div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">In case of LLVM2.9, "%0" is interesting case.  </o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">When I try to extract types using "</o:p><o:p style="RIGHT: auto">Module_Ptr->getTypeSymbolTable()".</o:p><o:p style="RIGHT: auto"></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">for(TypeSymbolTable::const_iterator I = M->getTypeSymbolTable().begin(),<BR>      E = M->getTypeSymbolTable().end(); I != E; ++I) {</o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">   if( I->second->isStructTy() )</o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">   {</o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">     //code to collect type names</o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">   }</o:p><o:p style="RIGHT: auto">     </o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">}</o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto"></o:p> </div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">I don't get this type in TypeSymbolTable.  :( </div></o:p></o:p>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto"></o:p> </div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">Though </o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">struct{</o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto"> union {</o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">   char a[4];</o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto"> };</o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">};</o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">too is anonymous, but a name is given to it, i.e anonanonct. </o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto"></o:p> </div><o:p style="RIGHT: auto">
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">I need this information as I want to collect all type-names. </o:p></div></o:p>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto"></o:p> </div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto"></o:p> </div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">Thanks & Regards,</o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto">Pankaj</o:p></div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto"></o:p> </div>
<div style="RIGHT: auto" class=MsoNormal><o:p style="RIGHT: auto"></o:p> </div></div></body></html>