[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