On Thu, Apr 9, 2015 at 12:41 PM, Swati Rathi <swatira...@cse.iitb.ac.in> wrote: > > The variables are declared as you have mentioned. > > IStream *var1; > IStream *var2; > > Also, var1 and var2 are declared in different functions.
Works for me. class IStream; void foo (void) { IStream *var1; } void bar (void) { IStream *var2; } > g++ -S t.C -fdump-tree-gimple-uid > cat t.C.004t.gimple void foo() () { struct IStreamD.2324 * var1D.2327; } void bar() () { struct IStreamD.2324 * var2D.2330; } thus both TYPE_NAMEs have the same DECL_UID 2324. Their type, even the pointer type have the same TYPE_UID as well as seen in a debugging session looking at the functions BLOCK tree before gimplification. You must be doing sth wrong. Richard. > > > On Thursday 09 April 2015 03:30 PM, Richard Biener wrote: >> >> On Thu, Apr 9, 2015 at 11:57 AM, Swati Rathi <swatira...@cse.iitb.ac.in> >> wrote: >>> >>> We want to store all the types associated with the class objects or >>> pointer >>> to a class in a program. >>> >>> Consider two variables var1 and var2 declared in different functions as >>> below. >>> class IStream *var1; >>> class IStream *var2; >>> >>> We are extracting its type as below : >>> tree type1 = TREE_TYPE (TREE_TYPE (var1)); >>> tree type2 = TREE_TYPE (TREE_TYPE (var2)); >>> >>> TREE_CODE (type1) and TREE_CODE (type2) is RECORD_TYPE. >>> We wish to record the type struct IStream. >>> >>> However, when we print TYPE_UID (type1) and TYPE_UID (type2), it is >>> different. >>> TYPE_UID = 4326, tree_type : struct IStream >>> TYPE_UID = 7421, tree_type : struct IStream >>> >>> Using TYPE_UID (TYPE_MAIN_VARIANT (type1)) and TYPE_UID >>> (TYPE_MAIN_VARIANT >>> (type2)) also gives the same result. >>> >>> We wish to avoid duplicate entries of the same type. >>> How to extract types and uid? >> >> Doesn't it work with >> >> class IStream; >> >> IStream *var1; >> IStream *var2; >> >> ? >> >>> Regards, >>> Swati >>> >