Stale type system documentation?

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 In particular, this appears to be in direct contradiction with: Can anyone else confirm my interpretation? I want to be sure there’s not something subtle here I’m missing. Philip


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