[LLVMdev] Regarding anonymous types

Pankaj Gode godepankaj at yahoo.com
Tue Dec 6 03:54:09 PST 2011


Hi All,
 
While collecting type information for "anonymous types", I had below observation.
 
For the example with anonymous types, given below
struct test 
{
  struct {
    union {
      Char a[4];
    };
  };
  struct {
    int b;
    char c;
  };
};
 
LLVM 2.6 defines the types as 
%struct.anon1 = type { %union.anon0}
%struct.anon2 = type { i32, i8}
%struct.test = type { %struct.anon1, %struct.anon2}
%union.anon0 = type {[4 x i8]}
 
Whereas, LLVM 2.9 defines the types as
%0 = type { i32, i8}
%anonanonct. = type {%anonanonn.}
%anonanonn.  = type { [ 4x i8] }
%struct.test = type { %anonanonct., %0}
 
In case of LLVM2.9, "%0" is interesting case.  
When I try to extract types using "
Module_Ptr->getTypeSymbolTable()".
 
Though 
struct{
 union {
   char a[4];
 };
};
too is anonymous, but a name is given to it, i.e anonanonct. 
 
I need this information as I want to collect all type-names. 
 
 
Thanks & Regards,
Pankaj
 
 
for(TypeSymbolTable::const_iterator I = M->getTypeSymbolTable().begin(),
      E = M->getTypeSymbolTable().end(); I != E; ++I) {
   if( I->second->isStructTy() )
   {
     //code to collect type names
   }
     
}
 
I don't get this type in TypeSymbolTable.  :( 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111206/988f7012/attachment.html>


More information about the llvm-dev mailing list