sepavloff added a comment.

In https://reviews.llvm.org/D40508#938686, @rjmccall wrote:

> In https://reviews.llvm.org/D40508#938675, @sepavloff wrote:
>
> > In https://reviews.llvm.org/D40508#938040, @rjmccall wrote:
> >
> > > My skepticism about the raw_ostream is not about the design of having a 
> > > custom raw_ostream subclass, it's that that subclass could conceivably be 
> > > re-used by some other client.  It feels like it belongs as an internal 
> > > hack in Clang absent some real evidence that someone else would use it.
> >
> >
> > This class can be helpful in various cases where string identifier must 
> > persistently identify an object and memory consumption must be low. It may 
> > be:
> >
> > - If we introduce an option that allows a user to specify how many symbols 
> > of full type name are kept in abbreviated name, then `llvm-link` may see 
> > types named as `foo<int>` and `2544896211ff669ed44dccd265f4c9163b340190`, 
> > if they come from modules compiled with different options. To find out that 
> > these are the same type, it must have access to the same machinery.
>
>
> The LLVM linking model does not actually depend on struct type names 
> matching.  My understanding is that, at best, it uses that as a heuristic for 
> deciding whether to make an effort to unify two types, but it's not something 
> that's ultimately supposed to impact IR semantics.


It is mainly true with an exception, when `llvm-link` resolves opaque types it 
relies on type name only. And this behavior creates the issue that 
https://reviews.llvm.org/D40567 tries to resolve.

> If we needed IR type names to match reliably, we would use a mangled name, 
> not a pretty-print.

There is no requirement for IR type name to be an identifier, so pretty-print 
fits the need of type identification.


https://reviews.llvm.org/D40508



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to