[LLVMdev] Regarding anonymous types

Devang Patel dpatel at apple.com
Tue Dec 6 10:36:32 PST 2011


Pankaj,

I encourage you to read Chris's excellent blog entry on type system @ http://blog.llvm.org/2011/11/llvm-30-type-system-rewrite.html
-
Devang

On Dec 6, 2011, at 3:54 AM, Pankaj Gode wrote:

> 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()".
> 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.  :(
>  
> 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
>  
>  
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111206/506b8704/attachment.html>


More information about the llvm-dev mailing list