Looking at the LangRef, I see some wording relating to the type system which appears to have not been updated. The section that concerns me is: " Note that type names are aliases for the structural type that they indicate, and that you can therefore specify multiple names for the same type. This often leads to confusing behavior when dumping out a .ll file. Since LLVM IR uses structural typing, the name is not part of the type. When printing out LLVM IR, the printer will pick /one name/ to render all types of a particular shape. This means that if you have code where two different source types end up having the same LLVM type, that the dumper will sometimes print the "wrong" or unexpected type. This is an important design point and isn't going to change." from http://llvm.org/docs/LangRef.html#named-types In particular, this appears to be in direct contradiction with: http://llvm.org/docs/LangRef.html#structure-type Can anyone else confirm my interpretation? I want to be sure there's not something subtle here I'm missing. Philip -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140107/9869fc65/attachment.html>
ping On 01/07/2014 10:04 AM, Philip Reames wrote:> Looking at the LangRef, I see some wording relating to the type system > which appears to have not been updated. The section that concerns me is: > " Note that type names are aliases for the structural type that they > indicate, and that you can therefore specify multiple names for the > same type. This often leads to confusing behavior when dumping out a > .ll file. Since LLVM IR uses structural typing, the name is not part > of the type. When printing out LLVM IR, the printer will pick /one > name/ to render all types of a particular shape. This means that if > you have code where two different source types end up having the same > LLVM type, that the dumper will sometimes print the "wrong" or > unexpected type. This is an important design point and isn't going to > change." from http://llvm.org/docs/LangRef.html#named-types > > In particular, this appears to be in direct contradiction with: > http://llvm.org/docs/LangRef.html#structure-type > > Can anyone else confirm my interpretation? I want to be sure there's > not something subtle here I'm missing. > > Philip-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140214/d19c4c80/attachment.html>
I can confirm that this seems to be out of date. In particular the sentence: "Structures can either be "literal" or "identified". A literal structure is defined inline with other types (e.g. {i32, i32}*) whereas identified types are always defined at the top level with a name. Literal types are uniqued by their contents and can never be recursive or opaque since there is no way to write one. Identified types can be recursive, can be opaqued, ****and are never uniqued****." If you send a patch to llvm-commits removing that, we can get the ball rolling on bringing this up to date. -- Sean Silva On Tue, Jan 7, 2014 at 1:04 PM, Philip Reames <listmail at philipreames.com>wrote:> Looking at the LangRef, I see some wording relating to the type system > which appears to have not been updated. The section that concerns me is: > " Note that type names are aliases for the structural type that they > indicate, and that you can therefore specify multiple names for the same > type. This often leads to confusing behavior when dumping out a .ll file. > Since LLVM IR uses structural typing, the name is not part of the type. > When printing out LLVM IR, the printer will pick *one name* to render all > types of a particular shape. This means that if you have code where two > different source types end up having the same LLVM type, that the dumper > will sometimes print the "wrong" or unexpected type. This is an important > design point and isn't going to change." from > http://llvm.org/docs/LangRef.html#named-types > > In particular, this appears to be in direct contradiction with: > http://llvm.org/docs/LangRef.html#structure-type > > Can anyone else confirm my interpretation? I want to be sure there's not > something subtle here I'm missing. > > Philip > > _______________________________________________ > 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/20140215/d6f639ac/attachment.html>