Questions about the equality between two llvm types

Hi All,

I have a question about the comparison of two types.

Generally, comparing two types are just comparing their
pointers. However, one declared type (in programs) may be mapped into
more than one llvm types, in the module resulting from linking other
unit modules.

For example, a class "mrViewingHitRecord" may have two corresponding
IR entities:


So, how to justify that the above two types are the same? Does each
llvm type have one canonical type?